首页 > 开发 > Java > 正文

java实现简单TCP聊天程序

2024-07-14 08:41:44
字体:
来源:转载
供稿:网友

本文实例为大家分享了java实现TCP聊天程序的具体代码,供大家参考,具体内容如下

服务端代码:

package com.test.server; import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket; public class Server {  public static void main(String[] args) { new Server().startServer(); }  public void startServer(){ try {  //服务器在9990端口监听客户端的连接  ServerSocket ss = new ServerSocket(9999);  System.out.println("server is listening...");  while(true){  //阻塞的accept方法,当一个客户端连接上,才会返回Socket对象  Socket s = ss.accept();  System.out.println("a client has connected!");  //开启线程处理通信  new CommunicateThread(s).start();  } } catch (IOException e) {  e.printStackTrace(); } }  public class CommunicateThread extends Thread{  Socket socket; DataInputStream dis; DataOutputStream dos;  public CommunicateThread(Socket socket){  this.socket = socket;  try {  dis = new DataInputStream(socket.getInputStream());  dos = new DataOutputStream(socket.getOutputStream());  } catch (IOException e) {  e.printStackTrace();  } }  @Override public void run() {  super.run();  //读取客户端发过来的消息  String msg = null;  try {  while((msg = dis.readUTF()) != null){   System.out.println("client send msg :" + msg);   String replyMsg = "server reply : " + msg;   dos.writeUTF(replyMsg);   System.out.println("server reply msg :" + replyMsg);  }  } catch (IOException e) {  e.printStackTrace();  } } } }

客户端代码:

package com.test.client; import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.util.Scanner; public class Client {  public static void main(String[] args) { new Client().startClient(); }  public void startClient(){ try {  //连接到服务器  Socket socket = new Socket("localhost", 9999);  DataInputStream dis = new DataInputStream(socket.getInputStream());  DataOutputStream dos = new DataOutputStream(socket.getOutputStream());  Scanner scanner = new Scanner(System.in);  String line = null;  listenServerReply(dis);  while((line = scanner.nextLine()) != null){//读取从键盘输入的一行  dos.writeUTF(line);//发给服务端  System.out.println("client send msg : " + line);  } } catch (Exception e) {  e.printStackTrace(); } }  //监听服务端回复的消息 public void listenServerReply(final DataInputStream dis){ new Thread(){  @Override  public void run() {  super.run();  String line = null;  try {   while((line = dis.readUTF()) != null){   System.out.println("client receive msg from server: " + line);   }  } catch (IOException e) {   e.printStackTrace();  }  } }.start(); } }

先启动服务端,再启动客户端,在客户端的控制台输入消息并回车,就可以发送消息给客户端了,客户端收到消息后,马上会回复一个消息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表