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

简介

当我们在网上进行数据传输的时候,首先需要建立稳定的连接(针对于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地址即可。

开启服务器和客户端

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

运行截图:


总结

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


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


Over!

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值