📄 tcpserver.java
字号:
/*
* TCPServer.java
*
* Created on 2006年5月6日, 下午1:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package skyqq;
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;
/**
*
* @author wjhua
*/
public class TCPServer implements Runnable{
private volatile boolean stopflag;
ServerSocket server;
Socket client;
//为了将得到的消息输出到界面
App app;
public TCPServer(App a) {
try {
server=new ServerSocket(20000);
} catch (IOException ex) {
ex.printStackTrace();
}
app=a;
}
public void send(String str){
if(client.isConnected()){
PrintWriter out=null;
BufferedReader in=null;
try {
out=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
in=new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (IOException ex) {
ex.printStackTrace();
}
out.println(str);
}
}
public void run() {
System.out.println("TCP Server started……");
try {
//得到客户端连接线程
if(server!=null)
client=server.accept();
else{
return;
}
} catch (IOException ex) {
ex.printStackTrace();
}
stopflag=false;
BufferedReader in = null;
try {
if(client!=null)
in=new BufferedReader(new InputStreamReader(client.getInputStream()));
else return;
} catch (IOException ex) {
ex.printStackTrace();
}
//监听这个连接,一直从这个连接中读取数据,知道客户端关闭
while(!stopflag){
String str = null;
ShowMsg sm=new ShowMsg(app,"first");
//查看客户端是否关闭
if(client.isClosed()){
System.out.println("client closed");
finish();
break;
}
//得到客户端发过来的数据
try {
str = in.readLine();
} catch (IOException ex) {
ex.printStackTrace();
}
//处理客户端发过来的数据 todo
if(str==null)
break;
System.out.println("client:"+client.getInetAddress().getHostAddress()+str);
if(str.equals("END")){
sm.setMsg("Warning:client is closed, please\n reset server or link to other");
new Thread(sm).start();
if(client!=null)
try {client.close();
} catch (IOException ex) {
ex.printStackTrace();
}
if(server!=null)
try {server.close();
} catch (IOException ex) {
ex.printStackTrace();
}
finish();
break;
}
sm.setMsg("client:"+str);
new Thread(sm).start();
}
}
//停止这个线程
public void finish(){
stopflag=true;
System.out.println("tcp server is closed");
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -