Java使用socket实现两人聊天对话
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java使⽤socket实现两⼈聊天对话import java.io.*;
import .ServerSocket;
import .Socket;
import java.util.Scanner;
/**
* User: HYY
* Date: 13-10-29
* Time: 下午9:57
* To change this template use File | Settings | File Templates.
*/
public class Server {
public static final int SERVER_PORK = 10000;
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket serverSocket = new ServerSocket(SERVER_PORK);
System.out.println("正在监听 " + SERVER_PORK + " 端⼝!");
Socket socket;
BufferedReader bufferedReader;
while (true) {
socket = serverSocket.accept();
System.out.println("⼀客户端连接。
");
Thread writerThread = new Thread(new MyServerWriter(socket));
writerThread.start();
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
try {
String msg;//客户端发过来的信息
while ((msg = bufferedReader.readLine()) != null) {
System.out.println("##客户端:" + msg);
}
} catch (IOException e) {
try {
if (!socket.isClosed()) {
socket.close();
}
} catch (IOException e1) {
System.out.println("关闭socket出现错误");
}
}
System.out.println("提⽰:当前客户端已经断开连接,服务器正等待下⼀个客户端的连接。
");
}
}
}
class MyServerWriter implements Runnable {
private Socket socket = null;
private PrintWriter printWriter;
private Scanner scanner;
public MyServerWriter(Socket socket) throws IOException {
this.socket = socket;
scanner = new Scanner(System.in);
printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
}
@Override
public void run() {
String msg;//要发送的信息
try {
while ((msg = scanner.nextLine()) != null) {
if (msg.equals("88")) {
if (!socket.isClosed()) {
System.out.println("服务器⼿动与客户端断开");
socket.close();
}
break;
}
printWriter.println(msg);
}
} catch (IOException io) {
System.out.println("关闭socket出现问题");
} catch (Exception e) {
System.out.println("异常关闭客户端(可能是直接关闭退出窗⼝)");
}
}
}
import java.io.*;
import .Socket;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* User: HYY
* Date: 13-10-29
* Time: 下午10:31
* To change this template use File | Settings | File Templates.
*/
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 10000);
System.out.println("连接服务器成功!如果想断开连接请输⼊88(回车)");
new Thread(new MyClientWriter(socket)).start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
try {
String msg;//服务器发过来的信息
while ((msg = bufferedReader.readLine()) != null) {
System.out.println("##服务器:" + msg);
}
} catch (IOException e) {
System.out.println("警告:断开连接!");
try {
if (!socket.isClosed()) {
socket.close();
}
} catch (IOException e1) {
System.out.println("读取线程:关闭socket出现错误");
}
}
System.exit(1);
}
}
class MyClientWriter implements Runnable{
private Socket socket = null;
private PrintWriter printWriter;
private Scanner scanner;
public MyClientWriter(Socket socket) throws IOException {
this.socket = socket;
scanner = new Scanner(System.in);
printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
}
@Override
public void run() {
String msg;//要发送的信息
try {
while ((msg = scanner.nextLine()) != null) {
System.out.println("isClosed="+socket.isClosed());
if(socket.isClosed()) {
break;
} else {
if(msg.equals("88")) {
break;
}
}
printWriter.println(msg);
}
} catch (Exception e) {
// System.out.println("异常关闭客户端(可能是直接关闭退出窗⼝)");
}
System.out.println("写线程准备死亡");
}
}。