TCP协议实现通信

Socket类:该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。

​ 方法:
getInetAddress() 返回套接字所连接的地址。

getInputStream()返回此套接字的输入流

Inetaddress类:此类表示Internet协议(IP)地址。

提供的方法:

    • getAddress()返回此 InetAddress对象的原始IP地址。
    • getByName(String host)确定主机名称的IP地址。

利用tcp协议实现客户端与服务器端的连接实际上就是利用Io流来实现的,代码如下:

package Inetcode;

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class Client {
    public static void main(String[] args) {
        Socket socket =null;
        OutputStream os =null;
        //第一步:要知道服务器的地址,端口号
        try {
            InetAddress severip  = InetAddress.getByName("127.0.0.1");
            int port= 999;
            //第二步:创建一个socket连接
                socket = new Socket(severip,port);
            //第三步:使用Io流发送消息
                os = socket.getOutputStream();
                os.write("怎么了?".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
           if (os!=null){
               try {
                   os.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
           if (socket!=null){
               try {
                   socket.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
        }
    }
}
package Inetcode;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Sever {
    public static void main(String[] args){
        ServerSocket serverSocket =null;
        Socket socket =null;
        InputStream is =null;
        ByteArrayOutputStream baos =null;

        //第一步:有一个地址
        try {
            serverSocket = new ServerSocket(999);
            //第二步:等待客户端连接
            socket = serverSocket.accept();//监听accept

            //第三步:读取客户端消息
             is = socket.getInputStream();
             baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while ((len=is.read(buffer))!=-1){
                baos.write(buffer,0,len);
                System.out.println(baos.toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (baos!=null){
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket!=null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
posted @   萧何i  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示