您的位置:首页 > 编程语言 > Java开发

java中ServerSocket和Socket的简单用法

2013-08-05 22:09 369 查看
1.Socket 与ServerSocket区别

①在java网络编程中,这两个容易混。ServerSocket用于绑定端口,如果写服务器一定要用。而Socket就是普通的连接套接字,用于建立网络连接,做客户端要用到,服务端也要用。

②所谓socket也成为“套接字”,用于描述IP地址和端口。

③在客户端与服务端连接成功后,两端都会产生一个Socket实例。

2.java.net.Socket常用的方法有三个

①accept方法,用于产生阻塞。直接连接到一个连接,并返回一个客户端的Socket对象实例。“阻塞”的意思就是使程序运行到此暂时停止,直到接收到会话,才继续。通常“阻塞”由循环产生

②getInputStream获得网络连接输入,同时返回一个InputSteram对象实例

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

PS:其中getInputStream和getOutputStream就会产生一个IOException,必须被捕获,因为他们返回的流对象,通常会被另一个流对象使用。

3.Server-Client模型开发的原理

服务器:

使用ServerSocket指定监听的端口(一般选1024以上),然后等待客户端连接,一旦连接成功,就产生会话;会话结束后就关闭会话。

客户端:

使用Socket对网络上某一个服务器的某个端口发出连接请求,若连接成功就打开会话,会话完成后就关闭Socket。

①ServerSocket类

创建一个ServerSocker类,同时在指定端口处建立一个监听服务,如:

ServerSocket lisenter = new ServerSocket(4000);
这里指定的监听端口为4000,为了随时监听可能的Client请求,执行如下语句:

Socket so = listener.accept();
这时程序会一直阻塞直到捕捉到一个来自Client的请求,并返回一个用于与该Client通信的Socket对象so。此后Server只要向so读写数据即可实现与Client会话。

②Socket对象

当Client需要从Server获取信息时,应创建一个Socket对象:

Socket socket = new Socket("ServerName",4000);
Socket类构造函数有两个参数,第一个为要连接的主机名称,第二个为Server的端口。然后可以使用getInputStream()和getOutputStream()在二者之间通信。

PS:ServerSocket一般仅用于设置端口号和监听,真正用于二者通信的还是服务端的Socket和客户端的Socket。

4. 如果创建了一个Socket对象,那么它可通过getInputStream()方法从服务程序获取输入流传送来的信息,也可通过调用getOutputStream()方法获得输出流来发送消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: