java-------TCP------Socket与ServerSocket
2014-03-29 11:03
337 查看
运行TCP协议通信时,客户机和服务器之间首先需要建立一个连接,然后,客户机端和服务器端程序各自将一个Socket对象与这个连接绑定,然后,两端的程序就可以通过和连接绑定的Socket对象来读写数据了。
一、网络套接字Socket与ServerSocket
在java网络编程中,套接字是一个用于端口连接和数据交换的对象,一个套接字有IP地址和端口号唯一确定。网络的每一个端口,都可以通过和连接绑定的套接字对象来交换数据。在c/s的模式下,按照套接字在网络中所起的作用不同,可以将它们分两类:客户机端套接字Socket和服务器端套接字SreverSocket.
(1)服务器端ServerSocket
服务器端的套接字始终在监听是否有程序请求,如果发现客户极端Socket向服务器发出连接请求,且服务器接受服务请求,则服务器端Socket向客户极端Socket发回"接受"的消息。这样,两个Socket对象之间的连接就建立了。
(2)客户极端Socket
建立一个和服务器的连接,这需要客户极端知道服务器端的主机名和提供服务的端口号。有了这些信息,当客户极端发出的建立连接的请求被服务器端接受时,客户机上就会创建一个Socket对象。利用这个Socket对象,客户机就可以与服务器进行通信了。
二、Socket类
Socket实现了客户极端的Socket,Socket对象可以用来向服务器发出连接请求,交换数据
常用的构造方法 Socket(InetAddress address,int port) 创建一个主机地址为address,端口号为port的流套接字。
如:Socket mysocket = new Socket("218.198.118.112",2010);要连接的远程主机的IP地址是218.198.118.112,端口号是2010
重要的方法
InputStream getInputStream() 返回此套接字的输入流
OutputStream getOutputStream() 返回此套接字的输出流
三、代码实现
四、ServerSocket类
ServerSocket类实现了服务器端套接字。SreverSocket对象监听网络中来自客户机的服务请求,根据请求建立连接,并根据服务请求运行相应的服务程序。
常用的方法
Socket accept(); 侦听并接受到此套接字的连接
五、代码实现
六、效果展示
七、本地端口说明
简单地说,本地端口就是本地可以对外提供服务或与外界连接的接口
八、查询本地端口
一、网络套接字Socket与ServerSocket
在java网络编程中,套接字是一个用于端口连接和数据交换的对象,一个套接字有IP地址和端口号唯一确定。网络的每一个端口,都可以通过和连接绑定的套接字对象来交换数据。在c/s的模式下,按照套接字在网络中所起的作用不同,可以将它们分两类:客户机端套接字Socket和服务器端套接字SreverSocket.
(1)服务器端ServerSocket
服务器端的套接字始终在监听是否有程序请求,如果发现客户极端Socket向服务器发出连接请求,且服务器接受服务请求,则服务器端Socket向客户极端Socket发回"接受"的消息。这样,两个Socket对象之间的连接就建立了。
(2)客户极端Socket
建立一个和服务器的连接,这需要客户极端知道服务器端的主机名和提供服务的端口号。有了这些信息,当客户极端发出的建立连接的请求被服务器端接受时,客户机上就会创建一个Socket对象。利用这个Socket对象,客户机就可以与服务器进行通信了。
二、Socket类
Socket实现了客户极端的Socket,Socket对象可以用来向服务器发出连接请求,交换数据
常用的构造方法 Socket(InetAddress address,int port) 创建一个主机地址为address,端口号为port的流套接字。
如:Socket mysocket = new Socket("218.198.118.112",2010);要连接的远程主机的IP地址是218.198.118.112,端口号是2010
重要的方法
InputStream getInputStream() 返回此套接字的输入流
OutputStream getOutputStream() 返回此套接字的输出流
三、代码实现
package org.Net; import java.net.Socket; public class NetDemo04 { public static void main(String[] args) { Socket socket; try { socket = new Socket("119.75.213.36",80); System.out.println("是否绑定连接:"+socket.isBound()); System.out.println("本地端口:"+socket.getLocalPort()); System.out.println("连接服务器的端口:"+socket.getPort()); System.out.println("连接服务器的地址:"+socket.getInetAddress()); System.out.println("远程服务器的套接字:"+socket.getRemoteSocketAddress()); System.out.println("是否处于连接状态:"+socket.isConnected()); System.out.println("客户套接详情:"+socket.toString()); } catch (Exception e) { System.out.println("服务器端没有启动"); } } }
四、ServerSocket类
ServerSocket类实现了服务器端套接字。SreverSocket对象监听网络中来自客户机的服务请求,根据请求建立连接,并根据服务请求运行相应的服务程序。
常用的方法
Socket accept(); 侦听并接受到此套接字的连接
五、代码实现
package org.Net; import java.net.ServerSocket; public class NetDemo05 { public static void main(String[] args) { ServerSocket serversocket = null; try { serversocket = new ServerSocket(2010); System.out.println("服务器的端口:"+serversocket.getLocalPort()); System.out.println("服务器的地址:"+serversocket.getInetAddress()); System.out.println("服务器的套接字:"+serversocket.getLocalSocketAddress()); System.out.println("是否绑定连接:"+serversocket.isBound()); System.out.println("连接是否关闭:"+serversocket.isClosed()); System.out.println("服务器套接字详情:"+serversocket.toString()); } catch (Exception e) { System.out.println("服务器端没有启动"); } } }
六、效果展示
七、本地端口说明
简单地说,本地端口就是本地可以对外提供服务或与外界连接的接口
八、查询本地端口