Server(Python)-使用套接字的客户端(Java)通信
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Server(Python)-使用套接字的客户端(Java)通信,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1924字,纯文字阅读大概需要3分钟。
内容图文
![Server(Python)-使用套接字的客户端(Java)通信](/upload/InfoBanner/zyjiaocheng/663/e99e9f7cf60a4c6d8422b961f6391bf2.jpg)
我尝试将消息从服??务器发送到客户端,客户端收到消息后,它将消息发送回服务器,依此类推.问题在于在python中接收消息.循环被卡在那里.
import socket
HOST = "localhost"
PORT = 9999
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')
try:
s.bind((HOST, PORT))
except socket.error as err:
print('Bind failed. Error Code : ' .format(err))
s.listen(10)
print("Socket Listening")
conn, addr = s.accept()
while(True):
conn.send(bytes("Message"+"\r\n",'UTF-8'))
print("Message sent")
data = conn.recv(1024)
print(data.decode(encoding='UTF-8'))
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Main {
static Thread sent;
static Thread receive;
static Socket socket;
public static void main(String args[]){
try {
socket = new Socket("localhost",9999);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
sent = new Thread(new Runnable() {
@Override
public void run() {
try {
BufferedReader stdIn =new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while(true){
System.out.println("Trying to read...");
String in = stdIn.readLine();
System.out.println(in);
out.print("Try"+"\r\n");
System.out.println("Message sent");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
sent.start();
try {
sent.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
解决方法:
Python代码很好.问题在于,在Java代码中调用out.print不一定会导致您的消息立即通过套接字发送.加
out.flush();
之后立马
out.print("Try"+"\r\n");
强制通过套接字发送消息. (flush通过流将尚未发送的任何数据“冲洗”.)然后,Python应该能够正确接收它.
内容总结
以上是互联网集市为您收集整理的Server(Python)-使用套接字的客户端(Java)通信全部内容,希望文章能够帮你解决Server(Python)-使用套接字的客户端(Java)通信所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。