java编程网络编程,多线程,小型聊天系统
来源:互联网 发布:数据采集模块 编辑:程序博客网 时间:2024/05/22 16:46
package SocketTest;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Date;//java编程网络编程,多线程,小型聊天系统public class Server6 { public static void main(String[] args) { new Thread(){ ServerSocket serverSocket = null;//服务器套接字定义初始化 Socket client = null;//客服端套接字初始化 OutputStream os = null;//此抽象类是表示输出字节流的所有类的超类。 InputStream is= null;//此抽象类是表示字节输入流的所有类的超类。 //从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 BufferedReader br = null; //将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 BufferedWriter bw= null; BufferedReader br1 = null; @Override public void run() { // TODO Auto-generated method stub try{// new Date()该对象会返回当前的时间 System.out.println("服务器启动:"+new Date());// 初始化服务器 serverSocket = new ServerSocket(8888); client =serverSocket.accept();//accept()监听客户端的连接,没有连接则处于阻塞状态 os =client.getOutputStream();//打开通往客户端的输出流,可以用来给客户端发数据 is = client.getInputStream();//打开客户端通往服务器端的输入流,用来接收来自客户端的数据 br1=new BufferedReader(new InputStreamReader(System.in)); br =new BufferedReader(new InputStreamReader(is)); bw = new BufferedWriter(new OutputStreamWriter(os)); while(true){ // 1.读客户端发来的数据 System.out.println("客户端说:"+br.readLine()); // 2.读取服务器端通过键盘输入的内容 String line =br1.readLine(); // 3.将服务器端输入的内容发送给客户端 bw.write(line); bw.newLine(); bw.flush(); if("quit".equals(line)){ break; } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { serverSocket.close(); client.close(); os.close(); is.close(); br.close(); bw.close(); br1.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); }}/*服务器启动:Tue Dec 26 00:34:41 CST 2017客户端说:服务器你好你也好客户端说:我收到了好的客户端说:quitquit*/
package SocketTest;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.net.Socket;import java.net.UnknownHostException;public class Client6 { public static void main(String[] args) { // TODO Auto-generated method stub Socket client=null; OutputStream os = null; InputStream is= null; BufferedReader br = null; BufferedWriter bw= null; BufferedReader brServer=null; try {// 连接服务器,通过ip和端口号 client = new Socket("127.0.0.1",8888); os =client.getOutputStream();//打开通往客户端的输出流,可以用来给客户端发数据 is = client.getInputStream();//打开客户端通往服务器端的输入流,用来接收来自客户端的数据// 从键盘读取一行字符串 br =new BufferedReader(new InputStreamReader(System.in));// 将字符串发送到Server1服务器端 bw =new BufferedWriter(new OutputStreamWriter(os)); brServer = new BufferedReader(new InputStreamReader(is)); System.out.println("-----------开始聊天-------------"); while(true){// 1.读取客户端通过键盘输入的内容 String line =br.readLine();// 2.将客户端输入的内容发送给服务器 bw.write(line); bw.newLine(); bw.flush(); if("quit".equals(line)){ break; }// 3.读server服务器发来的数据 System.out.println("服务器说:"+brServer.readLine()); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { client.close(); os.close(); is.close(); br.close(); bw.close(); brServer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }}/*-----------开始聊天-------------服务器你好服务器说:你也好我收到了服务器说:好的quit*/
阅读全文