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

针对于tcp简单socket的聊天

2012-12-08 14:34 337 查看
代码展示

1 监听线程

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class MonitoringMessage extends Thread {
private Socket socket;

public Socket getSocket() {
return socket;
}

public void setSocket(Socket socket) {
this.socket = socket;
}

public MonitoringMessage(Socket socket) {
super();
this.socket = socket;
}

public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
while(true){//用死循环等待对方发送的消息
System.out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}


客户端代码:

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientChat {
public static void main(String[] args) {

Socket socket = null;
try {
socket = new Socket("127.0.0.1",5431);
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
new MonitoringMessage(socket).start();  //监听发送过来的消息
while(true){
out.println(br.readLine());
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{

if(null!=socket){
try {

socket.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}
}


服务端代码:

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServiceChat {
public static void main(String[] args) {

ServerSocket serverSocket = null;
Socket socket = null;
try {
serverSocket = new ServerSocket(5431);
socket = serverSocket.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
new MonitoringMessage(socket).start();
while(true){
out.println(br.readLine());
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null!=socket){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

if(null!=serverSocket){
try {

serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: