JAVA socket编程实例

来源:互联网 发布:银河麒麟知乎 编辑:程序博客网 时间:2024/05/01 22:44
import java.io.*;

  import java.net.*;

  public class SocketCommunicationClient

  {

   public static void main(String[] args)

   {

   try{

   Socket clientSocket =new Socket ("mice",9000);//创建一个流Socket并与主机mice上的端口9000相连接

   OutputStream output =clientSocket.getOutputStream();//向此Socket写入字节的一个输出流

   DataInputStream input=new DataInputStream(clientSocket.getInputStream());

   file://创建新的数据输入流以便从指定的输入流中读出数据

   int c;

   String response;

   while (( c= System.in.read())!=-1)//从屏幕上接受输入的字符串,并且分解成一个个字符

    {

    output.write((byte)c);

    if(c=='\n')//如果字符为回车,则输出字符串缓冲

    {

     output.flush();

     response=input.readLine();

     System.out.println("Communication:"+response);

    }

   }

   output.close();

   input.close();

   clientSocket.close();

   } catch (Exception e){

    System.err.println("Exception :"+e);

   }

  }

  }



import java.net.*;

  import java.io.*;

  public class SocketCommunicationServer

  {

   public static void main(String[] args)

   try

   {

    boolean flag=true;//设置标志位为真

    Socket client=null;//创建Socket client以接收来自客户端的请求

    String inputLine;

    ServerSocket serverSocket =new ServerSocket (9000);//以端口9000创建一个服务器Socket

    System.out.println("服务器在端口9000上监听");

    file://也可以使用serverSocket.getLocalPort()来获得端口号

    while(flag)

    {

     client=serverSocket.accept();

     file://监听并接受与此Socket的连接,该方法会阻塞直到有一个连接产生

     DataInputStream input=new DataInputStream(new BufferedInputStream(client.getInputStream()));

     PrintStream output=new PrintStream(new BufferedOutputStream(client.getOutputStream());

     while (( inputLine= input.readLine())!=null)

      {

       if(inputLine.equals("Stop"))

       {

        flag=false;

        break;

       }

       output.println(inputLine);

       output.flush();

      }

      output.close();

      input.close();

      client.close();

     }

     serverSocket.close();

     }catch(IOException e){}

    }

   }

  }


服务器:

    import java.io.*;   
    import java.net.*;   
      
    public class MyServer {   
    public static void main(String[] args) throws IOException{   
    ServerSocket server=new ServerSocket(5678);   
    while(true){   
    Socket client=server.accept();   
    BufferedReader in=  
    new BufferedReader(new InputStreamReader(client.getInputStream()));   
    PrintWriter out=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();   
    }   
    }   
    }  


客户机代码:

import java.net.*;   
import java.io.*;   
 
public class MultiUser extends Thread{   
private Socket client;   
 
public MultiUser(Socket c){   
this.client=c;   
}   
 
public void run(){   
try{   
BufferedReader in=  
new BufferedReader(new InputStreamReader(client.getInputStream()));   
PrintWriter out=new PrintWriter(client.getOutputStream());   
//Mutil User but can't parallel   
while(true){   
String str=in.readLine();   
System.out.println(str);   
out.println("has receive....");   
out.flush();   
if(str.equals("end"))   
break;   
}   
client.close();   
}catch(IOException ex){   
}finally{   
 
}   
}   
 
public static void main(String[] args)throws IOException{   
ServerSocket server=new ServerSocket(5678);   
while(true){   
//transfer location change Single User or Multi User   
MultiUser mu=new MultiUser(server.accept());   
mu.start();   
}   
}   
}

原创粉丝点击