一个简单的socket DEMO

本文介绍了Socket通信的基本原理,通过类比的方式解释了服务端与客户端的交互过程,并提供了简单的Java代码实现,包括服务端与客户端的具体编程步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

socket是一种比较流行的网络编程方式,由于工作中用到了局域网通信,简单了解了一下socket通信的实现过程。
既然是通信,则至少存在两个进程,而且必须包括一个建立服务的进程,即建立socket服务端;这个服务端规定了服务的端口,以供所有的客户端连接。可以把socket比作听一场讲座:场地工作人员相当于服务端,观众相当于客户端,场地工作人员规定观众只能从东南口进入(服务端规定所有的socket通信只能通过60000端口),观众从东南口进来后即可看见演讲人,可以与其进行交流(客户端通过60000端口链接服务端,实现交互通信)。大致就是这个流程。话不多说,上代码。

服务端:
建立服务:EchoS.java

public class EchoS {
private ServerSocket serverSocket;
public EchoS(){
try {
serverSocket= new ServerSocket(60000);
} catch (IOException e) {
e.printStackTrace();
}
}

public   void Server(){
try {
Socket socket = serverSocket.accept();
System.out.println("client:" + socket.getInetAddress() + ":" + socket.getLocalPort());
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
        String linestr;
        while ((linestr = br.readLine()) != null) {
          System.out.println(linestr);
          pw.println("--->" + linestr);
        }
} catch (IOException e) {
System.out.println("连接断开:(");
e.printStackTrace();
}
}
}

启动服务:SocketServer.java

public class SocketServer {
  public static void main(String[] args) {
    new EchoS().Server();
  }
}


客户端:
配置连接属性:EchoC.java

public class EchoC {

private Socket socket;
public EchoC(){
try {
socket = new Socket("localhost",60000);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void Client(){
try {
      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
      BufferedReader lbr = new BufferedReader(new InputStreamReader(System.in));
     
      String linestr = null;
      while ((linestr = lbr.readLine()) != null) {
       
        pw.println(linestr);
       
        System.out.println(br.readLine());
       
        if (linestr.equals("bye#")) {
          break;
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
}
}

启动连接:SocketClient.java

public class SocketClient {
public static void main(String[] args) {
    new EchoC().Client();
  }
}

分别启动服务和连接后,测试
一个简单的socket <wbr>DEMO

一个简单的socket <wbr>DEMO



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值