socket

来源:互联网 发布:变声软件变成女人声 编辑:程序博客网 时间:2024/05/29 15:23

用socket套接字实现应用程序间的通信

1、应用程序作为服务器时,可以用以下代码实现:

   ServerSocket server=new ServerSocket(int Port);

//server是创建的服务器对象,Port为该服务器占用的端口号,只有当服务器和客户端的端口号相同时才能连接成功。

     在服务器端进行等待:

         Socket socket2=server.accept();//服务器等待客户机的访问,程序运行到此处将被堵塞,即不向下继续执行,直到有客户机访问该服务器

2、应用程序作为客户端时,可以用如下代码来创建将与端口号一致的服务器相连的客户端:

   Socket client=new Socket(String IP,int Port);

  //client是创建的客户端对象,IP、Port分别是该客户端占用的IP号、端口号,此时服务器的socket2被声明成功,堵塞状态不复存在,程序继续向下执行

3、客户端和服务器连上后,需要进行他们之间的通信,怎么办呢?可以分别获取两个对象的输入、输出流对象,以进行读写操作。

    获取客户端的输入、输出流对象:

   InputStream is_client=socket.getInputStream();

    //is_client是客户端socket的输入流对象

   OutputStream os_client=socket.getOutputStream();

    //os_client是客户端socket的输入流对象

  同样的,可以获取服务器端的输入、输出流对象:

 InputStream is_server=socket2.getInputStream();

    //is_server是客户端socket的输入流对象

   OutputStream os_server=socket2.getOutputStream();

    //os_server是客户端socket的输入流对象

 

4、有了输入、输出流对象后,可以用读写操作进行服务器和客户端之间的通信了。

a、客户端写入信息,服务器获取信息:

      is_client.write("hello#".getBytes());//客户端写入"hello”,'#'是信息结束的协议

      StringBuffer sb=new StringBuffer();//sb是长度可动态变化的字符串对象,便于添加字符和字符串,用来保存下面服务器读到的信息

       char c;//用于保存读到的单个字节

       c=os_server.read();//将读到的一个字节存储到变量c中

      while(c!='#'){//当读到的字符不是表示信息结束的'#'时,就一直读取下去

              sb.append(c);//将读到的字符添加到sb中

              c=os_server.read();//继续读取下一个字节

       }

      接下来,服务器就可以对保存在sb中的信息进行相应的处理

b、同理,服务器回应客户端的过程,也就是服务器写入信息(os_server.write()),客户端读取信息(is_client.read())的,只是将上面的输入、输出流对象变换一下

0 0