欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用TCP实现简单的聊天功能

程序员文章站 2024-03-22 18:12:52
...

简介

当我们在网上进行数据传输的时候,首先需要建立稳定的连接(针对于TCP),然后通过Socket(套接字)将数据以流的方式输入输出,让双方的数据进行交互。而对于UDP,只需要知道对方的地址即可,不需要进行稳定的连接。TCP比较稳定,效率低。UDP效率比较高,但不稳定。

用TCP实现简单聊天功能

创建一个客户端和一个服务器端,模拟通讯

创建一个服务器端
package Socket;

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

/**
 * 服务器
 */
public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket server=new ServerSocket(7832);//Socket的服务器 并且指定端口号

        System.out.println("服务器开启监听!");    
        //服务器开始监听
        Socket socket=server.accept();//服务器开始监听    阻塞

        InputStream ins=socket.getInputStream();//返回此套接字的输入流。
        OutputStream ous=socket.getOutputStream();//返回此套接字的输出流。

        BufferedReader br=new BufferedReader(new InputStreamReader(ins));//将客户端那边的信息 放入缓存流
        PrintWriter pw=new PrintWriter(ous,true);//通过Socket自带的流将数据  输出到客户端

        Scanner input=new Scanner(System.in);
        String str=null;
        while (true){    //让客户端和服务器一直发送消息
            System.out.println(br.readLine());//输出客户端的信息
            str=input.nextLine();
            pw.println("女朋友:"+str);  //将信息输出到客户端
        }
    }
}

首先要创建一个服务器,并且指定端口号。端口号也就是每一个进程所特有的一个ID号(自己的理解),端口号的范围在0-65535之间,0-1023系统所保留,HTTP的端口号80。。。然后让服务器开启监听,如果有客户端连接,就通过Socket自带的输入输出流进行信息的交互。

创建一个客户端
package Socket;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端
 */
public class Client {
    public static void main(String[] args) throws IOException {
                            // 指定服务器的IP地址     端口号
        Socket socket=new Socket("localhost",7832);

        InputStream is=socket.getInputStream();//得到Socket自带的输入流
        OutputStream os=socket.getOutputStream();//得到Socket自带的输出流

        BufferedReader br=new BufferedReader(new InputStreamReader(is));//将输入流 放入 缓存中
        PrintWriter pw=new PrintWriter(os,true);//通过输出流   向服务器发消息

        Scanner input=new Scanner(System.in);
        String str=null;

        while (true){
            str=input.nextLine();
            pw.println("我:"+str);//发消息
            System.out.println(br.readLine());//收消息
        }
    }
}

创建一个客户端并且指定所连接的服务器的IP地址和端口号。因为我在自己电脑同时开启服务器和客户端,所以用localhost(本地IP地址)。如果你需要在两台电脑上测试的话,只需要改成对方服务器的IP地址即可。

开启服务器和客户端

一定要先开启服务器让服务器开启监听,再开启客户端,不然会报错。

运行截图:

使用TCP实现简单的聊天功能

总结

在使用Socket通讯时,当我们建立连接后,然后根据Socket自带的流getInputStream,getOutputStream进行数据的信息的输入输出。通过getInputStream将对方的信息输出到控制台,用getOutputStream将自己的信息输出给对方,从而达到了彼此通讯的效果。


        每日鸡汤:有梦想的人睡不着,没梦想的人睡不醒。 这个世界根本不存在“不会”这回事,当你失去所有依靠的时候,你自然就什么都会了。


Over!