本文实例为大家分享了java实现TCPSocket聊天室功能的相关代码,供大家参考,具体内容如下
1.TCPserver.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
import java.net.*;
import java.io.*;
import java.util.*;
import java.util.concurrent.*;
public class TCPserver{
private static final int SERVERPORT = 8888 ;
private ServerSocket MyServer = null ;
private List<Socket> Clients = new ArrayList<Socket>();
private ExecutorService mExecutorService;
public TCPserver(){
try {
MyServer = new ServerSocket(SERVERPORT);
mExecutorService = Executors.newCachedThreadPool();
System.out.println( "start:" );
Socket MySocket = null ;
while ( true ){
MySocket = MyServer.accept();
Clients.add(MySocket);
mExecutorService.execute( new ThreadServer(MySocket));
}
} catch (Exception e){
e.printStackTrace();
System.exit( 0 );
}
}
class ThreadServer implements Runnable{
private Socket msocket= null ;
private BufferedReader in= null ;
private PrintWriter out = null ;
private String mStrMSG = null ;
public ThreadServer(Socket socket) {
try {
this .msocket=socket;
in = new BufferedReader( new InputStreamReader(msocket.getInputStream(), "GB2312" ));
mStrMSG = "user:" + msocket.getInetAddress() + " come total:" + Clients.size();
SendMassage();
} catch (IOException e){
System.out.println( "erorr" );
System.exit( 0 );
}
}
private void SendMassage(){
try {
System.out.println(mStrMSG);
for (Socket MySocket:Clients)
{
out = new PrintWriter( new OutputStreamWriter(MySocket.getOutputStream(), "GB2312" ), true );
out.println(mStrMSG);
}
} catch (IOException e){
System.out.println( "erorr" );
System.exit( 0 );
}
}
public void run(){
try {
while ((mStrMSG = in.readLine())!= null ){
if (mStrMSG.trim().equals( "exit" )){
Clients.remove(msocket);
in.close();
out.close();
mStrMSG = "user:" + msocket.getInetAddress() + " exit tatal:" + Clients.size(); ;
msocket.close();
SendMassage();
break ;
}
else {
mStrMSG = msocket.getInetAddress()+ ":" + mStrMSG;
SendMassage();
}
}
} catch (IOException e){
System.out.println( "erorr" );
System.exit( 0 );
}
}
}
public static void main(String[] args){
new TCPserver();
}
}
|
2.TCPclient.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
import java.net.*;
import java.io.*;
import java.util.concurrent.*;
public class TCPclient {
private static final int PORT = 8888 ;
private Socket Client = null ;
private BufferedReader sin = null ;
private ExecutorService mExecutorService;
public TCPclient(){
try {
Client = new Socket( "120.27.126.174" ,PORT);
sin = new BufferedReader( new InputStreamReader(Client.getInputStream(), "GB2312" ));
mExecutorService = Executors.newCachedThreadPool();
mExecutorService.execute( new ThreadClient(Client));
String msg = null ;
while ((msg = sin.readLine()) != null ) {
System.out.println(msg);
}
} catch (IOException e){
System.out.println(e.getMessage());
}
}
class ThreadClient extends Thread{
private Socket mSocket = null ;
private String msg = null ;
BufferedReader in = null ;
PrintWriter out = null ;
public ThreadClient(Socket socket){
this .mSocket = socket;
}
public void run(){
try {
in = new BufferedReader( new InputStreamReader(System.in));
out = new PrintWriter( new OutputStreamWriter(mSocket.getOutputStream(), "GB2312" ), true );
while ( true ){
msg = in.readLine();
out.println(msg);
if (msg.trim().equals( "exit" )){
in.close();
out.close();
mExecutorService.shutdownNow();
break ;
}
}
} catch (IOException e){
System.out.println( "see you" );
System.exit( 0 );
}
}
}
public static void main(String[] args){
new TCPclient();
}
}
|
以上就是java实现TCPSocket聊天室功能的代码,希望对大家的学习有所帮助。