Socket多客户端(转自生菜肥羊)

客户端:

 

import java.io.*;   
import java.net.*;   
public class talkclient   
{   
    public static void main(String args[])   
    {   
        try  
        {   
            Socket socket = new Socket("192.168.13.123",9999);   
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));   
            PrintWriter os = new PrintWriter(socket.getOutputStream());   
            BufferedReader is = new BufferedReader(new InputStreamReader(   
                socket.getInputStream()));   
            String readline;   
               
            while (!"bye".equals(readline=sin.readLine()))     
           {   
                //==============写服务端==================//   
                os.println(readline);   
                os.flush();   
                //System.out.println("Client:" + readline);   
                   
                //==============读服务端==================//   
                System.out.println("服务端反馈:"+is.readLine());   
            }   
            String ss=is.readLine();   
            while(ss!=""){   
                System.out.println(ss);   
            }   
            os.close();   
            is.close();   
            socket.close();   
        }catch(Exception e)   
        {   
            System.out.println("Error" + e);   
        }   
    }   
}   

 

服务端:负责接收多个客户端的连接 ,然后交给多线程去处理

import java.io.*;   
import java.net.*;   
//引入了无关的类   
import java.applet.Applet;   
  
public class talkserver {   
    static int clientnum = 0; // 静态成员变量,记录当前客户的个数   
       
    public static void main(String args[]) {   
        ServerSocket server = null;   
        try {   
            server = new ServerSocket(9999);   
        } catch (IOException e1) {   
            e1.printStackTrace();   
        }   
           
       while(true){   
        try {   
               
            Socket socket = server.accept();   
            System.out.println("一个客户端连上来了....");   
            ServerThread thread=new ServerThread(socket);   
            //thread.start();   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
           
       }   
    }   
}  

 

多线程程序:

import java.io.*;   
  
import java.net.*;   
  
/**  
 * 服务器端逻辑线程  
 */  
public class ServerThread extends Thread {   
    Socket socket;   
    BufferedReader br=null;   
    PrintWriter os=null;   
    public ServerThread(Socket socket) {   
        this.socket = socket;   
        start(); //启动线程   
    }   
       
    public void run() {   
        BufferedReader is=null;    
        PrintWriter os=null;   
           
        try {   
            boolean flag=true;   
            //ServerSocket server = null;   
            //Socket socket = null;   
            //ServerSocket server = new ServerSocket(9999);   
            System.out.println("server listen on port 9999...");   
            //socket = server.accept();   
            is = new BufferedReader(new InputStreamReader(socket.getInputStream()));   
            os = new PrintWriter(socket.getOutputStream());   
           
           while(flag){   
             System.out.println("-------------------");   
               //多线程   
              //new ServerThread(socket, clientnum).start();   
                 
               
                 //标准输入端读取一行   
                 BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));   
                String str;   
                String reply;   
                while(!"".equals(str=is.readLine())){   
                    System.out.println(".....start...........");                       
                    System.out.println(str); //每写一行,就等着从客户端读进一行,   
                     reply=sin.readLine();    
                    os.println("服务端 说:"+reply); //写到客户端   
                    os.flush();   
                       
                    System.out.println("......end.........");   
                }   
  
                   
                System.out.println("out of while...");     
                //String line=sin.readLine();   
                os.println("server AAAAAAAAAAAAA"); //写到客户端   
                os.flush();   
            }   
           
        //****流如果关闭,socket也将会关闭,所以如果想在一个socket连接之内通讯*****//,   
        //***则应该在while之外关闭socket****//   
           
        //server.close();   
           
        } catch (Exception e) {   
            System.out.println("Error" + e);   
        }finally{   
            try {   
                is.close();   
                os.close();   
                socket.close();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
               
        }   
       
       
    }   
  
    /**  
 
     * 关闭流和连接  
 
     */  
    private void close() {   
        try {   
            //关闭流和连接   
            os.close();   
            br.close();   
            socket.close();   
        } catch (Exception e) {   
        }   
    }   
  
       
}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值