⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpclient.java

📁 点对点聊天系统 支持文字和语音聊天。同时是服务器和客户端。App.formApp.javaShowMsg.javaTCPClient.javaTCPServer.javaUDPCapture.java
💻 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 + -