经本人测试,完全可以用!
注:Java服务端可无限循环接收Python客户端发出的数据
Java做SocketServer服务端:给出一个版本。从网上下载之后不能用,经本人各种测试加修改,终于大功告成。
写法:
package com.hitachi.utils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class JServer implements Runnable {
ServerSocket ss;
public JServer() throws Exception {
ss = new ServerSocket(55533);
new Thread(this).start();
}
@Override
public void run() {
int i = 0;
System.out.println("server startup.");
while (true) {
try {
Socket s = ss.accept();
// 每个客户端一个处理线程
new Handler(s, i).start();
i++;
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
new JServer();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Handler extends Thread {
Socket s;
int id;
public Handler(Socket s, int id) {
this.s = s;
this.id = id;
}
@Override
public void run() {
System.out.println("等待中...");
try {
InputStream is = s.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
// 从客户端读取接收到的内容
String filename = in.readLine();
System.out.println("read line " + id + " :" + filename);
s.shutdownInput();
//===
OutputStream outputStream = s.getOutputStream();
String jsonString = "123456";
PrintWriter pWriter = new PrintWriter(outputStream);
pWriter.write(jsonString);
pWriter.flush();
outputStream.flush();
System.out.println("sending line " + id + " :>>>" + jsonString + "<<<");
s.shutdownOutput();
outputStream.close();
s.close();
//===
System.out.println("ok了");
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}
python做SocketClient客户端写法:给出一个版本
写法:
#coding:utf-8 import socket #链接服务端ip和端口 ip_port = ('127.0.0.1',55533) #生成一个句柄 sk = socket.socket() try: #请求连接服务端 sk.connect(ip_port) #发送数据 sk.send(b"end123456789\n") print("1111111111") #接收数据 server_reply = sk.recv(1024) print("2222222222") #打印接受的数据 server_reply = str(server_reply,'UTF-8') #关闭连接 sk.close() except: server_reply = '0' print (server_reply)