(解决)socket通信之Java做SocketServer服务端、Python做SocketClient客户端

经本人测试,完全可以用!

注: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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wzhwangzhuohui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值