网络编程实现的单人聊天功能

转载 2018年04月17日 21:19:31

转载自:https://blog.csdn.net/ztyxy1115/article/details/78948868


此篇主要讲述网络编程如何实现本地聊天功能,和局域网之间的聊天功能

一、单人聊天

首先创建服务器,此处我们使用多线程分别实现读和写的功能,这样可以提高效率

服务器端的读的功能:

  1. package one;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.net.ServerSocket;  
  7. import java.net.Socket;  
  8.   
  9. public class ServerTest {  
  10.   
  11.     public static void main(String[] args) {  
  12.         try {  
  13.             ServerSocket serverSocket = new ServerSocket(8888);  
  14.             Socket socket = serverSocket.accept();//判断客户端是否连接上服务器,连接上通过Socket进行相互通信  
  15.             ServerThread th = new ServerThread(socket);  
  16.             th.start();//开启线程  
  17.               
  18.             BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  19.             while(true){  
  20.                 String message = br.readLine();  
  21.                 System.out.println("读取客户端:"+message);  
  22.             }  
  23.         } catch (IOException e) {  
  24.             // TODO Auto-generated catch block  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  
  28.   
  29. }  

服务器端写的功能:


  1. package one;  
  2.   
  3. import java.io.BufferedWriter;  
  4. import java.io.IOException;  
  5. import java.io.OutputStreamWriter;  
  6. import java.net.Socket;  
  7. import java.util.Scanner;  
  8.   
  9. public class ServerThread extends Thread{  
  10.     private Socket socket;  
  11.       
  12.     public ServerThread(Socket socket) {  
  13.         super();  
  14.         this.socket = socket;  
  15.     }  
  16.   
  17.     @Override  
  18.     public void run() {  
  19.         Scanner sc = new Scanner(System.in);  
  20.         try {  
  21.             BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));  
  22.             while(true){  
  23.                 String str = sc.nextLine();  
  24.                 bw.write(str);  
  25.                 bw.newLine();  
  26.                 bw.flush();  
  27.             }  
  28.         } catch (IOException e) {  
  29.             // TODO Auto-generated catch block  
  30.             e.printStackTrace();  
  31.         }  
  32.     }  
  33.   
  34. }  

服务器端创建完成之后,下面就实现客户端的功能:

客户端的读取功能:

 

  1. package one;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.net.Socket;  
  7. import java.net.UnknownHostException;  
  8.   
  9. public class ClientTest {  
  10.   
  11.     public static void main(String[] args) {  
  12.         try {  
  13.             Socket socket = new Socket("127.0.0.1"8888);  
  14.             ClientThread th = new ClientThread(socket);  
  15.             th.start();  
  16.               
  17.             BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
  18.             while(true){  
  19.                 String message = br.readLine();  
  20.                 System.out.println("读取服务器端:"+message);  
  21.             }  
  22.         } catch (UnknownHostException e) {  
  23.             // TODO Auto-generated catch block  
  24.             e.printStackTrace();  
  25.         } catch (IOException e) {  
  26.             // TODO Auto-generated catch block  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  
  30.   
  31. }  


客户端的写入功能:

 

  1. package one;  
  2.   
  3. import java.io.BufferedWriter;  
  4. import java.io.IOException;  
  5. import java.io.OutputStreamWriter;  
  6. import java.net.Socket;  
  7. import java.util.Scanner;  
  8.   
  9. public class ClientThread extends Thread{  
  10.     private Socket socket;  
  11.   
  12.     public ClientThread(Socket socket) {  
  13.         super();  
  14.         this.socket = socket;  
  15.     }  
  16.       
  17.     @Override  
  18.     public void run() {  
  19.         Scanner sc = new Scanner(System.in);  
  20.         try {  
  21.             BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));  
  22.             while(true){  
  23.                 String str = sc.nextLine();  
  24.                 bw.write(str);  
  25.                 bw.newLine();  
  26.                 bw.flush();  
  27.             }  
  28.         } catch (IOException e) {  
  29.             // TODO Auto-generated catch block  
  30.             e.printStackTrace();  
  31.         }  
  32.     }  
  33.       
  34. }  


到此,单人聊天的功能都实现了,可以实现本地的聊天,如果想实现局域网内的聊天,只要把客户端的ip地址改成创建服务端的计算机的ip地址即可。

python项目之Web聊天软件开发

-
  • 1970年01月01日 08:00

Html5 WebSocket点对点聊天(单人)

  • 2015年10月07日 11:59
  • 43KB
  • 下载

网络编程中简单的点对点聊天程序

利用多进程实现,一个进程负责发送,一个进程负责接收!毕竟文件描述符共享(实际上是两个进程空间中不相关的文件描述符指向同一个文件)服务器端代码:/*server03*/#include ...
  • lzjsqn
  • lzjsqn
  • 2016-12-18 18:51:59
  • 1024

HTML5 WebSocket+Tomcat实现真●Web版即时聊天室(单人+多人)

心累,下班回到宿舍,花了一个多小时的时间打开网页。。。真实醉了,对于干IT的人来说,没有网络或者网络卡到爆,真实比割了JJ还难受。首先是LZ的电脑被别人中了木马,是mysql的漏洞,在图书馆连了公共W...
  • qqHJQS
  • qqHJQS
  • 2015-10-11 07:47:28
  • 12598

HTML5 WebSocket+Tomcat8实现真●Web版即时聊天室(单人+多人)

之前做了一篇tomcat7的websocket聊天室,这是基于tomcat7和jdk1.7下的,有的项目是在tomcat8下的,这个时候就会有问题,因为8下面不支持那种写法,它是以注解的方式来实现we...
  • qqHJQS
  • qqHJQS
  • 2015-10-13 13:42:47
  • 3888

利用spring 3.0+springMVC+dwr 3.0 实现一对一的无刷新聊天(一)

一、导入相关的jar包; 二、修改配置文件: 1、修改web.xml文件:           contextConfigLocation         /WEB-INF/class...
  • wang_joy
  • wang_joy
  • 2015-10-08 16:40:31
  • 558

java聊天室源代码

  • 2013年12月07日 11:57
  • 3KB
  • 下载

Java网络编程大作业,实现聊天室功能

  • 2014年07月04日 09:21
  • 44KB
  • 下载

简单的聊天室程序实现了多人聊天,一对一聊天等

  • 2012年09月06日 21:29
  • 20KB
  • 下载

基于Socket的网络聊天室

from asyncore import dispatcher from asynchat import async_chat import socket, asyncorePORT = 5005 N...
  • u014427196
  • u014427196
  • 2016-08-30 22:41:04
  • 671
收藏助手
不良信息举报
您举报文章:网络编程实现的单人聊天功能
举报原因:
原因补充:

(最多只允许输入30个字)