当前位置:编程学习 > JAVA >>

java 服务端问题

如何使服务器与多个客户端收发消息

补充:使用SOCKET方法
		
追问:这个是单个客户端的吧?

答案://服务端(调用具体的处理线程完成处理)

package com.socket.multiserver;

import java.io.*;
import java.net.*;
import com.socket.multiserver.ChildTh;

public class MyMultiServer {
 public static void main(String[] args) throws IOException{
  ServerSocket server=new ServerSocket(5678);
  while (true){
                Socket client=server.accept();
                ChildTh child=new ChildTh(client);//用socket实例初始化具体的处理线程对象
                //使用Runnable接口和使用extends Thread的区别:
                // 如果是使用Runnable接口,需要这么写:
                   new Thread(child).start();               
                //注意:不能写成:child.run();
                // 如果使用extends Thread,只需要child.start()就可以,因为start()是Thread的方法
                }
        }
}       

============================================================

//处理线程类:
package com.socket.multiserver;
import java.io.*;
import java.net.*;

public class ChildTh implements Runnable{
        private Socket client;
        public ChildTh(Socket client){
                this.client=client;
        }
       
        public void run(){       
           try{       
             BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
             PrintWriter ut=new PrintWriter(client.getOutputStream());
             while(true){
                     String str=in.readLine();
                     System.out.println(str);
                     out.println("has receive....");
                     out.flush();
                     if(str.equals("end"))
                        break;
             }       
                       
             client.close();
            }catch(Exception e){
                  System.out.println("error in the close the socket!");                       
                  e.printStackTrace();
              }
              finally{
                                                               
              }
        }
       
}

 

===========================================================

//客户端
package com.socket.multiserver;
import java.net.*;
import java.io.*;

public class MyMultiClient{
 static Socket client;
 
 public static void main(String[] args)throws Exception{
 
  client=new Socket(InetAddress.getLocalHost(),5678);
 
         BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
         PrintWriter ut=new PrintWriter(client.getOutputStream());
        
         //从标准输入接收数据
  BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
 
  while(true){
           String str=wt.readLine();
           //String str = "jonathan";
           out.println(str);
           out.flush();
           if(str.equals("end")){
                    break;
          }
           System.out.println(in.readLine());
  }
  client.close();
 }
}

http://www.51testing.com/?uid-202848-action-viewspace-itemid-122580

package com.net.data;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketAddress;

public class Receive { 
    public static void main(String[] args) { 
        try { 
            // 确定接受方的IP和端口号,IP地址为本地机器地址 
            InetAddress ip = InetAddress.getLocalHost(); 
            int port = 8080;   
            // 创建接收方的套接字,并制定端口号和IP地址 
            DatagramSocket getSocket = new DatagramSocket(port, ip);   
  &nbs

上一个:java深度编程
下一个:新手如何学好java?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,