JAVA模拟客户机与服务器实现简易的TCP通讯

本文提供了一个简单的JAVA程序示例,展示了如何通过TCP协议实现客户端与服务器之间的通信。客户端通过Socket连接服务器,双方可以互相发送和接收消息。

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

JAVA模拟客户机与服务器实现简易的TCP通讯

大致图解如下:
图解

//客户机

/*socket:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。 
Socket(InetAddress address, int port) :
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
*/
import java.io.*;
import java.net.*;
public class TcpClient{
    public static void main(String[] args){
        Socket s;
        try {
            s = new Socket("127.0.0.1",80);

            OutputStream os = s.getOutputStream();  //输出流接受输出字节并将这些字节发送到某个接收器。
            InputStream is = s.getInputStream();    //字节输入流

            byte[] buf = new byte[100];             //字节型数组         

            System.out.println("给服务器发消息");  

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//输入流      
            String msg = br.readLine();             //readLine将其转换为字符后返回,读取一个文本行。
            os.write(msg.getBytes());               //从指定的 byte 数组写入此输出流。

            System.out.println("等待来自服务器的消息");
            int len = is.read(buf);                 //从输入流中读取一定数量的字节,并将其存储在缓冲区数组 buf 中。返回len个字节数。
            msg = new String(buf,0,len);            //通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
            System.out.println(msg);
            s.close();                              //关闭此端点。
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } 
}
//服务器

/*ServerSocket此类实现服务器套接字。
服务器套接字等待请求通过网络传入。
它基于该请求执行某些操作,然后可能向请求者返回结果。 
ServerSocket(int port):创建绑定到特定端口(端口号)的服务器套接字。*/

import java.io.*;
import java.net.*;
public class TcpServer{
    public static void main(String[] args){
        ServerSocket ss;
        try {
            ss = new ServerSocket(80);

            System.out.println("waiting TcpClient connection.");
            Socket s = ss.accept();             //侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。 

            System.out.println("TcpClient connection success.");
            InputStream is = s.getInputStream();
            OutputStream os = s.getOutputStream();
            byte[] buf = new byte[100];

            System.out.println("等待来自客户端的消息");
            int len = is.read(buf);
            String msg = new String(buf,0,len);
            System.out.println(msg);

            System.out.println("给客户端发消息");
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            msg = br.readLine();
            os.write(msg.getBytes());

            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}

效果实现:
运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值