网络编程-多发多收练习

这是一个简单的Java程序示例,展示了如何使用Socket进行客户端和服务器之间的通信。客户端连接到本地的10081端口,读取用户输入并发送到服务器,直到接收到886时关闭连接。服务器则在10081端口监听,接收客户端发送的数据并打印出来。

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

        

public class sent {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("127.0.0.1",10081);
        OutputStream os = s.getOutputStream();
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.print("请输入:");
            String str = sc.next();
            if("886".equals(str)){
                break;
            }
            os.write(str.getBytes());
        }
        s.close();
    }
}


public class receive {
    public static void main(String[] args) throws IOException {
        ServerSocket s = new ServerSocket(10081);
        Socket accept = s.accept();
        InputStream is = accept.getInputStream();
        InputStreamReader ir = new InputStreamReader(is);
        int b;
        while((b = ir.read()) != -1){
            System.out.println((char)b);
        }
        accept.close();
        s.close();
    }
}

在TCP通信中,"多发多收"通常指的是客户端能够多次发送数据,而服务器则能接收并处理这些连续的数据包。以下是一个简单的Java示例,展示了如何在客户端和服务器端实现这样的功能: **客户端(Client)**: ```java import java.io.*; import java.net.*; public class Client { public static void main(String[] args) throws IOException { String message = "Hello, Server! This is a multi-message TCP client."; int port = 8000; // 假设服务器监听的端口 Socket socket = new Socket("localhost", port); PrintStream out = new PrintStream(socket.getOutputStream()); for (int i = 0; i < 5; i++) { // 发送5次消息 out.println(message + " - Message " + (i+1)); Thread.sleep(1000); // 暂停一秒增加模拟延迟 } socket.close(); } } ``` **服务器(Server)**: ```java import java.io.*; import java.net.*; public class Server extends Thread { private ServerSocket serverSocket; private Socket clientSocket; public Server(int port) { try { serverSocket = new ServerSocket(port); } catch (IOException e) { System.err.println("Could not listen on port: " + port); System.exit(1); } } @Override public void run() { while (true) { try { clientSocket = serverSocket.accept(); // 等待客户端连接 BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String line; while ((line = in.readLine()) != null) { // 接收并打印每条消息 System.out.println("Received from client: " + line); } clientSocket.close(); } catch (IOException e) { e.printStackTrace(); break; } } serverSocket.close(); } public static void main(String[] args) { int port = 8000; Server server = new Server(port); server.start(); } } ``` 在这个例子中,客户端循环发送5次消息,每次之间有短暂的暂停(这里只是为了演示),服务器则不断地接受和打印接收到的消息,直到客户端关闭连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值