您的位置:首页 > 理论基础 > 计算机网络

java编程网络编程,多线程,小型聊天系统

2017-12-26 00:40 645 查看
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
客户端说:服务器你好
你也好
客户端说:我收到了
好的
客户端说:quit
quit

*/


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
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: