📄 server.java
字号:
package Pro123;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class Server extends Thread {
ServerSocket skt;
static Socket Client[]=new Socket[10];;
Socket Client1=null;
int[] clientjishu={0};
int i = 0;
static String clientname[]=new String[10];;
TextArea in;
static int k=0;
int port,l=0;
//BufferedReader theInputStream;
PrintStream theOutputStream;
//String readin;
Face chat;
public Server(int port, Face chat) {
try {
this.port = port;
skt = new ServerSocket(port);
this.chat = chat;
} catch (IOException e) {
chat.ta.append(e.toString());
}
}
public void run() {
chat.ta.append("等待连线");
while (true) {
//System.out.print(""+i+"\n");
try {
Client[k] = skt.accept(); /**//* 接收客户连接 */
//当有客户端连接时就新建一个子线程
if (i < 2) {
ServerThread server[] = new ServerThread[10];
server[k]= new ServerThread(Client[k], this.chat, i);
BufferedReader theInputStream = new BufferedReader(new InputStreamReader(Client[k]
.getInputStream()));
clientname[k]=theInputStream.readLine();
//StringTokenizer tokenizer =
//new StringTokenizer(j, "_");
l=server.length;
server[k].start();
chat.ta.append("客户端" + Client[k].getInetAddress() + "已连线\n");
/**//*theInputStream = new BufferedReader(new InputStreamReader(Client
.getInputStream()));*/
//for(int j=0;j<server.length;j++)
theOutputStream = new PrintStream(server[k].getClient().getOutputStream());
i = server[k].getI();
k++;
} else {
//theOutputStream = new PrintStream(null);
}
} catch (SocketException e) {
//chat.ta.append("连线中断!\n");
//chat.clientBtn.setEnabled(true);
//chat.serverBtn.setEnabled(true);
//chat.tfaddress.setEnabled(true);
//chat.tfport.setEnabled(true);
//try {
//skt.close();
//Client.close();
//} catch (IOException err) {
// chat.ta.append(err.toString());
//}
} catch (IOException e) {
chat.ta.append(e.toString());
}
}
}
public void dataout(String data) {
//for(int j=0;j<l;j++)
theOutputStream.println(data);
}
public static Socket getSocket(String b){
for(int i=0;i<10;i++)
{
if(b.equals(clientname[i]))
{return Client[i];
}
}
return null;
}
}
class ServerThread extends Thread {
ServerSocket skt;
Socket Client;
String m1,m2;
TextArea in;
int port;
String liuzhe=null;
int i;
BufferedReader theInputStream;
PrintStream theOutputStream;
String readin;
Face chat;
//服务端子线程
public ServerThread(Socket s, Face chat, int i) {
this.i = ++i;
Client = s;
//this.port = port;
//skt = new ServerSocket(port);
this.chat = chat;
}
public int getI() {
return this.i;
}
public Socket getClient() {
return this.Client;
}
public void run() {
//chat.ta.append("等待连线");
try {
//Client = skt.accept(); /* 接收客户连接 */
//chat.ta.append("客户端" + Client.getInetAddress() + "已连线\n");
theInputStream = new BufferedReader(new InputStreamReader(Client
.getInputStream()));
theOutputStream = new PrintStream(Client.getOutputStream());
while (true) {
readin = theInputStream.readLine();
StringTokenizer tokenizer =
new StringTokenizer(readin, "_");
m1=tokenizer.nextToken();
m2=tokenizer.nextToken();
while(tokenizer.hasMoreTokens()){
m2=m2+"_";
m2=m2+tokenizer.nextToken();
}
Socket s1=Server.getSocket(m1);
if(s1!=null){
PrintStream print=new PrintStream(s1.getOutputStream());
print.println(m2);
}
else {
}
chat.ta.append(m1+"\n"+readin + "\n");
}
} catch (SocketException e) {
chat.ta.append("连线中断!\n");
chat.clientBtn.setEnabled(true);
chat.serverBtn.setEnabled(true);
chat.tfaddress.setEnabled(true);
chat.tfport.setEnabled(true);
try {
i--;
skt.close();
Client.close();
} catch (IOException err) {
chat.ta.append(err.toString());
}
} catch (IOException e) {
chat.ta.append(e.toString());
}
}
public void dataout(String data) {
theOutputStream.println(data);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -