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

📄 tcpserver.java

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