Java利用TCP实现简单的双人聊天
一、创建新项目
 首先创建一个新的项目,并命名为聊天。然后创建包,创建两个类,客户端(SocketClient)和服务器端(SocketServer)

二、实现代码
 客户端代码:
package 聊天;
 ?
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 import java.util.Scanner;
 ?
 public class SocketClient {
 ? ? public static void main(String[] args) throws IOException {
 ? ? ? ? Scanner input = new Scanner(System.in);
 ? ? ? ? Socket client = new Socket("localhost", 6666);
 ? ? ? ? while (true) {
 ? ? ? ? ? ?OutputStream out = client.getOutputStream();
 ? ? ? ? ? ?//从控制台输入
 ? ? ? ? ? ?System.out.println("客户端发送数据");
 ? ? ? ? ? ?String str = input.next();
 ? ? ? ? ? ?out.write(str.getBytes());
 ? ? ? ? ? // ?System.out.println("信息发送成功"+str);
 ? ? ? ? ? ?if (str.equals("over")) {
 ? ? ? ? ? ? ? ?System.out.println("客户端已关闭");
 ? ? ? ? ? ? ? ?out.close();
 ? ? ? ? ? ? ? ?client.close();
 ? ? ? ? ? ? ? ?break;
 ? ? ? ? ? ?}
 ? ? ? ? ? ?//-------------------客户器端读取回复信息----------------------//
 ? ? ? ? ? ?InputStream in = client.getInputStream();
 ? ? ? ? ? ?//4.读取数据
 ? ? ? ? ? ?byte[] b = new byte[1024];
 ? ? ? ? ? ?int len = in.read(b);
 ? ? ? ? ? ?//接收到的数据
 ? ? ? ? ? ?String info = new String(b, 0, len);
 ? ? ? ? ? ?System.out.println("这是从客户端接收的数据:" + info);
 ? ? ? ?}
 ? ? }
 }
服务器端代码:
package 聊天;
 ?
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.Scanner;
 ?
 public class SocketServer {
 ? ? public static void main(String[] args) throws Exception {
 ? ? ? ? ? ? System.out.println("服务器端启动,等待连接--------------");
 ? ? ? ? ? ? //1.创建ServerSocket对象,绑定端口,开始等待连接
 ? ? ? ? ? ? ServerSocket ss = new ServerSocket(6666);
 ? ? ? ? ? ? //2.接受连接,accept方法,返回Socket对象
 ? ? ? ? ? ? Socket server = ss.accept();
 ? ? ? ? while (true) {
 ? ? ? ? ? ? //3.通过Socket获取输入流
 ? ? ? ? ? ? InputStream in = server.getInputStream();
 ? ? ? ? ? ? //4.读取数据
 ? ? ? ? ? ? byte[] b = new byte[1024];
 ? ? ? ? ? ? int len = in.read(b);
 ? ? ? ? ? ? //接收到的数据
 ? ? ? ? ? ? String info = new String(b, 0, len);
 ? ? ? ? ? ? System.out.println("这是从客户端接收的数据:" + info);
 ?
 ? ? ? ? ? ? if (info.equals("over")) {
 ?
 ? ? ? ? ? ? ? ? System.out.println("服务器已关闭");
 ? ? ? ? ? ? ? ? in.close();
 ? ? ? ? ? ? ? ? server.close();
 ? ? ? ? ? ? ? ? break;
 ? ? ? ? ? ? }
 //-------------------服务器端回复信息----------------------//
 ? ? ? ? ? ? System.out.println("服务器回复客户端信息:");
 ? ? ? ? ? ? OutputStream out = server.getOutputStream();
 ? ? ? ? ? ? //从控制台输入
 ? ? ? ? ? ? Scanner input = new Scanner(System.in);
 ? ? ? ? ? ? String str = input.next();
 ? ? ? ? ? ? out.write(str.getBytes());
 ?
 ? ? ? ? }
 ? ? }
 }
三、运行结果
 先运行服务器端,然后快速运行客户端,实现如下效果


 ?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!