TCP实现聊天

TCP实现聊天

1.客户端

1>连接服务器Socket

2>发送消息

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class TcpServerDemo {
    //客户端
    public static void main(String[] args) {
        Socket socket = null;
        OutputStream os = null;
        try {
            //要知道服务器的地址
            InetAddress serverIP = InetAddress.getByName("127.0.0.1") ;
            int port = 9999;
            //创建一个sockt连接
            socket = new Socket(serverIP,port) ;
            //发送消息
            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 (Exception e) {
                    e.printStackTrace();
                }

            }
        }

    }
}

2.服务端

1>建立服务的端口 ServerSocket

2>等待用户的连接 accept

3>接收用户的消息

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpClientDemo {
    //服务端
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        InputStream is = null;
        ByteArrayOutputStream baos = null;
        try {
            //我得有一个地址
            serverSocket = new ServerSocket(9999) ;
            //等待客户端连接
            socket = serverSocket.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());

                /*
                byte[] buffer = new byte[1024];
                int len;
                 while((len = is.read(buffer)) != -1){
                 String msg = new String(buffer,0,len);
                 System.out.println(msg);
                 }
                 */

        } 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();
                }
            }
        }
    }
}

注意先启动服务端再启动客户端

posted @ 2020-08-15 10:53  南笙姑娘  阅读(131)  评论(0)    收藏  举报