洛神赋

子虚乌有

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  7 Posts :: 10 Stories :: 0 Comments :: 0 Trackbacks

         所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
下面是我忍为比较重要的API:
        1、. Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。"阻塞"是一个术语,它使程序运行暂时"停留"在这个地方,直到一个会话产生,然后程序继续;通常"阻塞"是由循环产生的。

  2、. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例,。

  3、. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

  注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。

  写代码时一般先写server端.
//Server

package Killva.NetWorkchaper1.o3;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class TestTCPServer {
 public static void main(String args[])throws IOException{
  ServerSocket ss =new ServerSocket(9999);
  while(true){
   System.out.println("--------服务端已近启动------------");
      Socket s =ss.accept();
     
      DataOutputStream dos =new DataOutputStream(s.getOutputStream());
     
      System.out.println("客户端["+s.getInetAddress().getHostAddress()+
                     "  :"+s.getPort()+
                     "]已近链接!");
      dos.writeUTF("服务器端写入客户端的数据:客户端("+
               s.getInetAddress().getHostAddress()+
                "  :"+s.getPort()+
                        "]已经链接上服务器端["+
                        s.getLocalAddress().getHostName()+
                        ":"+s.getLocalPort()+
                        "]!");
     
      dos.flush();
      dos.close();
      s.close();
     
     
  }
 }
 

}



Client端

package Killva.NetWorkchaper1.o3;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;


public class TestTCPCLient {
 public static void main(String[] args) throws IOException{
  System.out.println("-------------client端-----------");
  for(long i=0;i<10;i++){
   Socket s =new Socket("192.168.1.*",9999);//IP是用你所在的局域网来测试
   
   DataInputStream dis = new DataInputStream(s.getInputStream());
   System.out.println(""+dis.readUTF());
   dis.close();
   s.close();
  }
 }
}


运行结果真确时服务器端和客户端能连接

感谢阅读!!!!



posted on 2010-11-13 09:51 洛神赋 阅读(462) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: