Java Socket网络编程--聊天室的实现(多线程实现无需等待对方响应版本).docJava Socket网络编程--聊天室的实现(多线程实现无需等待对方响应版本).doc
一,服务端:
package com.samael.socket;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException;
import java.io.InputStreamReader; import java.io....
Java Socket网络编程--聊天室的实现(多线程实现无需等待对方响应版本).doc
一,服务端:
package com.samael.socket;
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException;
import java.io.InputStreamReader; import java.io.PrintWriter;
import java.net.ServerSocket; import java.net.Socket;
public class MyServer {
class ThGetMsg extends Thread{
@Override
public void run() {
if(fromClient==null) return;
while(true){
try {
System.out.println("Message From Client:["+fromClient.readLine()+"]");
this.sleep(50);
} catch (IOException e) {
break;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static BufferedReader fromClient=null;
public static void main(String[] args) {
try {
//get server socket
ServerSocket server=new ServerSocket(3166);
//get socket from client
Socket socket=server.accept();
System.out.println("The IP["+socket.getInetAddress()+"] is connected!");
//then we will get all the streams we need
//get information from keyboard
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
//get information from client
fromClient=new BufferedReader(new InputStreamReader(socket.getInputStream()));
Thread th=new MyServer().new ThGetMsg();
th.start();
//get printer for client
PrintWriter toClient=new PrintWriter(socket.getOutputStream());
String inputContent="";
System.out.print("Typing Words And Press [Enter] To Send The Messge:");
inputContent=input.readLine();
while(!input.equals("termination")){
toClient.println(inputContent);
toClient.flush();
inputContent=input.readLine();
}
input.close();
toClient.close();
fromClient.close();
th.stop();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二,客户端:
package com.samael.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import com.samael.socket.MyServer.ThGetMsg;
public class MyClient {
class ThGetMsg extends Thread{
@Override
public void run() {
if(fromServer==null) return;
while(true){
try {
System.out.println("Message From Server:["+fromServer.readLine()+"]");
this.sleep(50);
} catch (IOException e) {
break;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static BufferedReader fromServer=null;
public static void main(String[] args) {
try {
Socket socket=new Socket("localhost", 3166);
fromServer=new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
PrintWriter toServer=new PrintWriter(socket.getOutputStream());
Thread th=new MyClient().new ThGetMsg();
th.start();
String toServerContent="";
System.out.print("Typing Words And Press [Enter] To Send The Messge:");
toServerContent=input.readLine();
while(!toServerContent.equals("termination")){
toServer.println(toServerContent);
toServer.flush();
toServerContent=input.readLine();
}
input.close();
toServer.close();
fromServer.close();
th.stop();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最终效果:
Server End:
How?
Message From Client:[Hey~buddy~Where am I?] You're In My Office
Message From Client:[Really?This Is Your Office?It's So Wonderful!]
For Sure Buddy!
Client End:
Typing Words And Press [Enter] To Send The Messge:Message From Server:[How?]
Hey~buddy~Where am I?
Message From Server:[You're In My Office] Really?This Is Your Office?It's So Wonderful! Message From Server:[For Sure Buddy!]
本文档为【Java Socket网络编程--聊天室的实现(多线程实现无需等待对方响应版本).doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。