Socket通信(套接字)_TCP通信

本文介绍了网络编程的三要素:协议、IP地址和端口,并详细讲解了TCP通信中的Socket套接字概念。内容包括IP地址的查看、端口的作用、知名端口号的范围,以及Socket作为通信管道在客户端和服务端的角色。通过Socket实现端到端通信,强调了通信的严格性和同步性特点。

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

网络编程三要素:
  协议:TCP/IP , UDP
  IP : 网络中每个主机的地址
  IP地址:指互联网协议地址(Internet Protocol Address)
  ipconfig:查看本机IP地址.
  ping : 检查网络是否连通.

  特殊的IP地址
      - 本机IP地址: 127.0.0.1 localhost
       127.0.0.1 localhost永远只会寻找本机,在哪个主机中就会找哪个主机。

     端口:
       端口就是应用程序的一个所谓“编号”
       IP只能找到一个人的机器,端口才可以找到一个具体的应用程序。

       端口号:用两个字节表示的整数,它的取值范围是0~65535
       0~1023之间的端口号用于一些知名的网络服务和应用,
       普通的应用程序需要使用1024以上的端口号。
       如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

 

Socket网络编程(TCP通信):只要使用Socket进行网络编程,那么就是基于了TCP协议通信。
Socket:套接字,其实就是一个通信管道对象,通信是建立端到端的通信,Socket必须存在客户端和服务端两个角色。在通信之前,必须先启动服务端。
目标:客户端发送一个消息,服务端接收一个消息。

那接下来我们就去了解一下客户端怎么写?

客户端

研究Socket:
    构造器:
       a.public Socket(String host,int port)
    方法:
       public InputStream getInputStream();
       public OutputStream getOutputStream();

开发步骤:

             1.启动服务端。

             2.客户端应该建立与服务端的Socket管道连接。

             3.利用Socket管道进行通信。

public class SocketClient {
    public static void main(String[] args) throws Exception {
        // 1.启动服务端。
        // 2.创建一个Socket与服务端进行连接
        Socket socket = new Socket("192.168.67.82",9999);
        // 3.从socket管道中得到一个字节输出流。
        OutputStream os  = socket.getOutputStream();
        // 4.利用字节输出流往外写数据。
        // 5.把字节输出流包装一个打印流
        PrintStream ps = new PrintStream(os);

        ps.println("itheima客户端发送了,我活着,Over!");

        socket.close();
    }
}

服务端:    


 ServerSocket:
    构造器:
        a.public ServerSocket(int port)
     方法:
         public InputStream getInputStream();
         public OutputStream getOutputStream();
         public Socket accept();接收一个Socket连接。

开发步骤:

                 1.服务端要先注册端口。

                 2.服务端需要通过ServerSocket接收客户端的Socket连接。

                 3.利用接收到的Socket管道进行通信。

public class SocketServer {
    public static void main(String[] args) throws Exception {
        System.out.println("--服务器启动成功!--");
        // 1.注册端口:说明了服务端SocketServerDemo02的端口是9999
        ServerSocket ss = new ServerSocket(9999);
        // 2.接收客户端的Socket连接请求。
        // 这行代码会在这里阻塞,等待客户端的连接。
        Socket socket = ss.accept();
        // 3.服务端要从Socket管道中得到一个字节输入流。
        InputStream is = socket.getInputStream();
        // 4.把字节输入流转换成字符输入流,再转换成高级缓冲字符输入流。
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        // 5.读取数据
        String line = null ;
        if((line = br.readLine())!=null){
            System.out.println("服务端接收:"+line);
        }
        socket.close();
    }
}

注意:
     通信是非常严格的,客户端怎么发,服务端就怎么接收。
     客户端发多少,服务端就只能收多少。

         在通信的过程中,客户端和服务端就像一对的,只要一个死了,另一个就会报错。同时要也要注意客户端发一行,服务器也是接收一行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值