我的目标是从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 );
}
}
}
我的PYTHON代码:(客户端Socket)
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;
输出::
在Python控制台(客户端):
发送(输入q或Q退出):abcd(按回车键)
发送(输入q或Q退出):efgh(按回车键)
发送(输入q或Q退出):q(按回车键)
在Java控制台(服务器):
TCPServer正在端口5000上等待客户端连接
客户端/127.0.0.1:1335已连接
已接收:abcdefghq