您的位置:首页 > 其它

Socket通讯实例

2007-05-05 18:54 162 查看
服务器端代码:




/**//*


 * SocketConn.java


 *


 * Created on 2007年5月4日, 下午10:04


 *


 * 桂林电子科技大学 马如林


 *


 * Socket 通讯 建立Agent


 */




package com.mrl;




import java.io.*; 


import java.net.*; 






/** *//**


 *


 * @author 马如林


 */




public class SocketConn ...{


    




    /** *//** Creates a new instance of SocketConn */




    public SocketConn() ...{


    }


    


    public static void main(String args[])




    ...{


        String str = "";


        System.out.print("This is a socket test.");


        try




        ...{


            ServerSocket server = new ServerSocket(1234); 


            System.out.println("Started: " + server);


            Socket socket = server.accept(); 


            System.out.println("Socket: " + socket);


            InputStream fIn = socket.getInputStream();


            OutputStream fOut = socket.getOutputStream();


            


            InputStreamReader isr = new InputStreamReader(fIn);


            BufferedReader in = new BufferedReader(isr);


            PrintStream out = new PrintStream(fOut);


            InputStreamReader userisr = new InputStreamReader(System.in);


            BufferedReader userin = new BufferedReader(userisr);




            while(true)




            ...{            


                System.out.println("等待客户端的消息");


                str = in.readLine(); 


                System.out.println(str); 




                System.out.println("给客户端发送:");


                str = userin.readLine();


                out.println(str);


                if(str.equals("end")) 




                ...{


                    socket.close();


                    break; 


                }


                


            } 


            socket.close();


            server.close();


        }


        catch (Exception e)




        ...{


            e.getStackTrace();


            System.out.print("异常:"+e);


        }


        finally




        ...{




        }


                


        


    }


    


}



客户端代码:




/**//*


 * MultiUser.java


 *


 * Created on 2007年5月4日, 下午10:29


 *


 * To change this template, choose Tools | Template Manager


 * and open the template in the editor.


 */




package socket;


    


import java.net.*; 


import java.io.*; 






/** *//**


 *


 * @author rulinma


 */


public class MultiUser extends Thread




...{ 


    private Socket socket; 






    public static void main(String[] args)throws IOException




    ...{ 


        InetAddress addr = InetAddress.getByName("202.193.75.198");


        Socket socket = new Socket(addr,1234); 


        System.out.println("Socket:" + socket);


         try




        ...{ 


            InputStream fIn = socket.getInputStream();


            OutputStream fOut = socket.getOutputStream();


            InputStreamReader isr = new InputStreamReader(fIn);


            BufferedReader in = new BufferedReader(isr);


            PrintStream out = new PrintStream(fOut);


            InputStreamReader userisr = new InputStreamReader(System.in);


            BufferedReader userin = new BufferedReader(userisr);


            while(true)




            ...{ 


                System.out.println("发送:");


                String str = userin.readLine();


                out.println(str); 


                if(str.equals("end"))




                ...{


                    break;


                }


                System.out.println("等待服务器消息:");


                String strR = in.readLine();


                System.out.println("服务器端数据:" + strR); 




                if(strR.equals("end")) 




                ...{


                    break; 


                }


            } 


            socket.close(); 


        }


        catch(IOException ex)




        ...{ 


        }


        finally




        ...{ 


        } 


    } 








 
调试: 下面的不是完全匹配.就是个大概.
服务器端:

This is a socket test.Started: ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=1234]
Socket: Socket[addr=/202.193.75.215,port=1918,localport=1234]
等待客户端的消息
How are U?
给客户端发送:
Fine,你呢?
等待客户端的消息
Very good!
给客户端发送:
en.
等待客户端的消息
end
给客户端发送:
end

客户端:

Socket:Socket[addr=/202.193.75.198,port=1234,localport=1784]
发送:
How are U?
等待服务器消息:
服务器端数据:Fine,你呢?
发送:
Fine.
等待服务器消息:
服务器端数据:Very good!
发送:
en.
等待服务器消息:
end
服务器端数据:end

测试通过!

下面的是一个读取文件并传输的实例;
服务器端:




/**//*


 * SocketConn.java


 *


 * Created on 2007年5月4日, 下午10:04


 *


 * 桂林电子科技大学 马如林


 *


 * Socket 通讯 建立Agent


 */




package com.mrl;




import java.io.*; 


import java.net.*; 






/** *//**


 *


 * @author 马如林


 */




public class SocketConn ...{


    




    /** *//** Creates a new instance of SocketConn */




    public SocketConn() ...{


    }


    


    public static void main(String args[])




    ...{


        String str = "";


        System.out.print("This is a socket test.");


        try




        ...{


            ServerSocket server = new ServerSocket(1234); 


            System.out.println("Started: " + server);


            // Socket开始连接


            Socket socket = server.accept(); 


            System.out.println("Socket: " + socket);


            


            InputStream fIn = socket.getInputStream();


            OutputStream fOut = socket.getOutputStream();


            


            InputStreamReader isr = new InputStreamReader(fIn);


            BufferedReader in = new BufferedReader(isr);


            PrintStream out = new PrintStream(fOut);


            


            // 用户输入消息


            InputStreamReader userisr = new InputStreamReader(System.in);


            BufferedReader userin = new BufferedReader(userisr);


            


            // 端口有消息进入循环


            while(true)




            ...{            


               
                    System.out.println("等待客户端的消息");
                    //  读取客户端送来的数据


                str = in.readLine(); 


                System.out.println(str); 




                if(str.equals("end")) 




                ...{


                    socket.close();


                    break; 


                }


                


            } 


            socket.close();


            server.close();


        }


        catch (Exception e)




        ...{


            e.getStackTrace();


            System.out.print("异常:"+e);


        }


        finally




        ...{




        }


                


        


    }


    


}



客户端:
基本思想:就是将文件转换为流输出>.
代码在另外一台机上,明天贴:






/**//*


 * MultiUser.java


 *


 * Created on 2007年5月4日, 下午10:29


 *


 * To change this template, choose Tools | Template Manager


 * and open the template in the editor.


 */




package socket;


    


import java.net.*; 


import java.io.*; 






/** *//**


 *


 * @author rulinma


 */


public class MultiUser extends Thread




...{  




    public static void main(String[] args)throws IOException




    ...{ 


        InetAddress addr = InetAddress.getByName("202.193.75.198");


        Socket socket = new Socket(addr,1234); 


        System.out.println("Socket:" + socket);




         try




        ...{ 




            InputStream fIn = socket.getInputStream();


            OutputStream fOut = socket.getOutputStream();


            InputStreamReader isr = new InputStreamReader(fIn);




            BufferedReader in = new BufferedReader(new FileReader("D:/test.txt"));


            PrintStream out = new PrintStream(fOut);


            InputStreamReader userisr = new InputStreamReader(System.in);


            BufferedReader userin = new BufferedReader(userisr);


            String str = "" ;


            while((str = in.readLine()) != null)




            ...{ 


                System.out.println("发送:");




                ...{ 


                    out.println(str); 


                    if(str.equals("end"))




                    ...{


                        break;


                    }


                }




            } 


           // socket.close(); 


        }


        catch(IOException ex)




        ...{ 


        }


        finally




        ...{ 


        } 









下面需要研究如何并行通讯等.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息