📄 tcpclient.java
字号:
/*
* TCPClient.java
*
* Created on 2006年5月6日, 下午1:23
*
* 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.Socket;
import java.net.UnknownHostException;
/**
*
* @author wjhua
*/
public class TCPClient implements Runnable {
private volatile boolean stopflag;
private Socket client;
private String host;
private int port;
private PrintWriter out;
private BufferedReader in;
//为了将得到的消息输出到界面
App app;
/** Creates a new instance of TCPClient */
public TCPClient(String serverip,int serverport, App a) {
host=serverip;
port=serverport;
app=a;
}
private boolean connect(){
try {
client=new Socket(host,port);
} catch (UnknownHostException ex) {
ex.printStackTrace();
return false;
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
try {
out=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
in=new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
return true;
}
public void close(){
if(in!=null)
try {in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
if(out!=null)out.close();
if(client!=null)
try {
client.close();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("socket is closed");
}
public void send(String msg){
if(client.isConnected()){
out.println(msg);
out.flush();
System.out.println("发送"+msg);
} else{
System.err.println("socket 建立错误......");
return;
}
}
public void run() {
boolean temp=connect();
if(temp){
ShowMsg sm=new ShowMsg(app,"first");
//监听这个连接,一直从这个连接中读取数据,知道客户端关闭
while(!stopflag){
String str = null;
//查看客户端是否关闭
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("server:"+client.getInetAddress().getHostAddress()+str);
if(str.equals("END")){
//System.out.println("TCP Server is closed!");
sm.setMsg("Warning:client is closed, please\n reset server or link to other");
new Thread(sm).start();
if(in!=null)
try {in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
if(out!=null)out.close();
if(client!=null)
try {client.close();
} catch (IOException ex) {
ex.printStackTrace();
}
finish();
break;
}
sm.setMsg("server:"+str);
new Thread(sm).start();
}
} else{
System.out.println("连接失败");
}
}
private void finish() {
stopflag=true;
System.out.println("tcp server is closed");
return;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -