将Python或Ruby或PHP重新编码为Java Chatango Chatroom连接 - java

我想将此伪代码重新编码为Java:

使用套接字(用于在网络上/向服务器发送原始数据的低级工具)。
创建一个新的TCP套接字。
使用套接字建立与Chatango的连接。
将授权字符串发送给Chatango加入会议室。
发送信息。
关闭与Chatango的连接。

我已经尝试过对其重新编码,但是它不起作用,或者我不知道我是否做对了。

我已经用Python,Ruby和PHP编写了代码,但是我想用Java编写代码:

-蟒蛇-

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('s14.chatango.com', 443))
s.send(b'bauth:deinos\x00')
s.send(b"bmsg:hi, i'm connecting via python :3\r\n\x00")
s.close()

-红宝石-

require 'socket'
s = TCPSocket.open('s14.chatango.com', 443)
s.print "bauth:deinos\x00"
s.print "bmsg:hi, i'm connecting via ruby :3\r\n\x00"
s.close()

-PHP-

$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$s = socket_connect($socket, 's14.chatango.com', 443);
socket_write($socket, "bauth:deinos\x00");
socket_write($socket, "bmsg:hi, i'm connecting via php :3\r\n\x00");
socket_close($socket);

输出为:嗨,我通过(Python或Ruby或PHP)进行连接;
该消息将发送到此聊天室:http://deinos.chatango.com/。

  import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.Socket;

    public class Samp {
        public static void main(String[] args) throws Exception, IOException{
         //The Server
         String server = "s14.chatango.com";
         //The Message
         String str = "Hi,I am connecting to chatango using java :)";
         //The Port
         int port = 443;
         //The Socket Connection
         Socket sock = new Socket( server, port );

        InetAddress addr = sock.getInetAddress();
        //Print Connected
        System.out.println("Connected to " + addr);



        PrintWriter out =new PrintWriter(sock.getOutputStream(), true);
        BufferedReader in =  new BufferedReader(new           InputStreamReader(sock.getInputStream()));
        //Send Authorization to deinos
        out.println("bauth:deinos\0");
        //Print the String      
        out.println(str);

        //Closing all Connections        
            out.flush();
            in.close();
            out.close();
            sock.close();

        }
    }

但它仍然不会将字符串发布到http://deinos.chatango.com/
我的代码有问题还是我错过了什么?

参考方案

根据this answer on escape sequence in java,NUL字符(python \x00)的正确转义序列为\0\u0000

因此等效的"bauth:deinos\x00"将在Java "bauth:deinos\0"

以便具有与原始代码相同的功能

在java中

String server = "www.deinos.chatango.com";
String str = "Hi,I am connecting to chatango using java :)";
int port = 80;

应该由

String server = "s14.chatango.com";
String str = "Hi,I am connecting to chatango using java :)\r\n\0";
int port = 443;

编辑
修改后也丢失\r\n\0

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…

Java Globbing模式以匹配目录和文件 - java

我正在使用递归函数遍历根目录下的文件。我只想提取*.txt文件,但不想排除目录。现在,我的代码如下所示:val stream = Files.newDirectoryStream(head, "*.txt") 但是这样做将不会匹配任何目录,并且返回的iterator()是False。我使用的是Mac,所以我不想包含的噪音文件是.DS_ST…

直接读取Zip文件中的文件-Java - java

我的情况是我有一个包含一些文件(txt,png,...)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion):InputStream in = Main.class.getResourceAsStream("/resouces/zipfile/test.txt"); Buff…

Java RegEx中的单词边界\ b - java

我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…