`

Java之Socket

    博客分类:
  • Java
 
阅读更多

一:网络编程简介

1:网络协议

1OSI网络传输的七层结构(从下到上)

物理层-à数据链路层---〉网络层----〉传输层----〉会话层----〉表示层----〉应用层

2TCP/IP协议(实际中应用的标准)

链路层---à网络层----〉传输层-----〉应用层

2:各层主要的协议:

网络层:IP协议

传输层:TCP/UDP

应用层:HTTP/FTP/TELNET

二:TCP编程

1:特点:

1)建立连接,安全,效率低(联想打电话

2)把要传输的内容当作流的形式传输

2:客户端编程步骤:

(1)创建一个套接字(Socket)(用来跟服务器端进行直接通信)

(2)从这个套接字里面获得输入和输出流

(3)读写操作

(4)关闭流

(5)关闭套接字

3:服务器端:

(1)创建一个服务套接字(ServerSocket):主要用来判断是否有新的客户端访问,如果有的话,

   就创建一个新的服务员。

(2) 创建一个与客户端打交道的套接字(Socket)(服务员)

(3)Socket中获得输入和输出流

(4)读写操作

(5)关闭流

(6)关闭Socket

(7) 如果服务器不再为客户提供服务了,关闭ServerSocket(一般不会关闭)

三:UDP编程

1:特点:

1)无连接的,不安全,效率高,(联想发邮件)

2)把要传输的内容分隔成一个一个的数据报进行传输。

2:编程步骤:

(1) 创建一个根网络打交道的对象DatagramSocket

(2)  把自己的数据打包DatagramPacket

(3)通过DatagramSocket把自己的数据报发送过去。

 

 

注意:对网络中的输入输出流的包装。和IO的一样;看你要个服务端或客户端发送怎样的数据;

 

socket

所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 

  Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。 

 

server:

    private Socket socket;  
    private ServerSocket ss;  
  
    public Server() throws IOException {  
        ss = new ServerSocket(7777);  
        while (true) {  
            socket = ss.accept();  
            BufferedReader br = new BufferedReader(new InputStreamReader(socket  
                    .getInputStream()));  
            System.out.println("you input is : " + br.readLine());  
        }  
    } 

 Client:

    Socket client;  
    PrintWriter pw;  
    public Client() throws UnknownHostException, IOException {  
        client=new Socket("Socket服务器IP",7777);  
        pw=new PrintWriter(client.getOutputStream());  
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));  
        pw.write(br.readLine());  
        pw.close();  
        br.close();  
    }  

 

 

  详细链接

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics