python客户端和java服务器之间的通信

Ama*_*ugh 4 python java sockets

我的目标是从python套接字向java套接字发送消息.我确实看了上面提到的资源.但是我很难让Python客户端与Java服务器通信.主要是因为python中的(行尾)与java中的不同.

说我从python客户端写:消息1:abcd消息2:efgh消息3:q(退出)

在java服务器:我收到消息1:abcdefghq后跟异常,因为python客户端从它的末尾关闭了套接字.

任何人都可以建议一个解决方案,以便在java和python之间进行一致的讨论.

我使用的参考:http://www.prasannatech.net/2008/07/socket-programming-tutorial.html

更新:我忘了添加,我正在研究TCP.

我的JAVA代码是这样的:(服务器套接字)

String fromclient;

ServerSocket Server = new ServerSocket (5000);

System.out.println ("TCPServer Waiting for client on port 5000");

while(true) 
{
    Socket connected = Server.accept();
    System.out.println( " THE CLIENT"+" "+ connected.getInetAddress() +":"+connected.getPort()+" IS CONNECTED ");

    BufferedReader inFromClient = new BufferedReader(new InputStreamReader (connected.getInputStream()));

    while ( true )
    {
        fromclient = inFromClient.readLine();

        if ( fromclient.equals("q") || fromclient.equals("Q") )
        {
            connected.close();
            break;
        }
        else
        {
            System.out.println( "RECIEVED:" + fromclient );
        } 
    }
}
Run Code Online (Sandbox Code Playgroud)

我的PYTHON代码:(客户端套接字)

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("localhost", 5000))

while 1:

    data = raw_input ( "SEND( TYPE q or Q to Quit):" )
    if (data <> 'Q' and data <> 'q'):
        client_socket.send(data)
    else:
        client_socket.send(data)
        client_socket.close()
        break;
Run Code Online (Sandbox Code Playgroud)

输出::

在PYTHON CONSOLE(客户):

发送(Q型或Q退出):abcd(按ENTER键)

发送(Q型或Q退出):efgh(按ENTER键)

发送(Q型或Q退出):q(按ENTER键)

在JAVA CONSOLE(服务器)上:

TCPServer在端口5000上等待客户端

客户端/127.0.0.1:1335已连接

收到:abcdefghq

小智 7

您需要附加\n到数据末尾...

即:

client_socket.send(data + '\n')
Run Code Online (Sandbox Code Playgroud)