我的目标是从python socket向javasocket发送消息。我确实注意到了上面提到的资源。然而,我正在努力使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代码:(客户端套接字)
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(按ENTER键)
发送(键入q或q退出):efgh(按ENTER键)
发送(键入q或q退出):q(按ENTER键)
在JAVA控制台(服务器)上:
TCPServer正在端口5000上等待客户端
客户端/127.0.0.1:1335已连接
收件人:abcdefghq
是..您需要在python客户端的字符串末尾添加“\n”。。。。。 这里有一个例子。。。 PythonTCPCLient.py
`
`
下面是java代码: JavaServer.java `
` 引用:Python TCP Client & Java TCP Server
将
\n
附加到data
的结尾:以下是相同的工作代码: java服务器
客户端.py
相关问题 更多 >
编程相关推荐