17.3 基于TCP协议的网络编程
来源:互联网 发布:修改软件版权信息 编辑:程序博客网 时间:2024/05/17 01:07
17.3.1 TCP协议基础
IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议。
17.3.2 使用ServerSocket创建TCP服务器
在两个通信实体没有建立虚拟链路之前,必须有一个通信实体先做出“主动姿态”,主动接收来自其他通信实体的连接请求。
Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端Socket连接,如果没有连接,它将一直处于等待状态。
ServerSocket包含一个监听来自客户端连接请求的方法。
◆Socket accpet():如果接收到一个客户端Socket的连接请求,该方法将返回一个与客户端Socket对应的Socket;否则该方法将一直处于等待状态,线程也被阻塞。
◆ServerSocket(int port):用指定的端口port来创建一个ServerSocket。该端口应该有一个有效的端口整数值,即0~65535。
◆ServerSocket(int port, int backlog):增加一个用来改变连接队列长度的参数backlog。
◆ServerSocket(int port, int backlog, IntetAddress localAddr):在机器存在多个IP地址的情况下,允许通过localAddr参数来指定将ServerSocket绑定到指定的IP地址。
当ServerSocket使用完毕后,应使用ServerSocket的close()方法来关闭该ServerSocket。在通常情况下,服务器不应该只接收一个客户端请求,而应该不断地接收来自客户端的所有请求,所以Java程序通常会通过循环不断地调用ServerSocket的accept()方法。如下代码片段所示。
//创建一个ServerSocket,用于监听客户端Socket的连接请求ServerSocket ss = new ServerSocket(30000);//采用循环不断地接收来自客户端的请求while(true){//每当接收到客户端Socket的请求时,服务器也对应产生一个SocketSocket s = ss.accept();//下面就可以使用Socket进行通信了...}提示:
上面程序中创建ServerSocket没有指定IP地址,则该ServerSocket将会绑定到本机默认的IP地址。程序中使用30000作为该ServerSocket的端口号,通常推荐使用1024以上的端口,主要是为了避免与其他应用程序的通用端口冲突。
17.3.3 使用Socket进行通信
客户端通常可使用Socket的构造器来连接到指定服务器,Socket通常可使用如下两个构造器:
◆Socket(InetAddress/String remoteAddress, int port):创建连接到指定远程主机、远程端口的Socket,该构造器没有指定本地地址、本地端口,默认使用本地主机的默认IP地址,默认使用系统动态指定的IP地址。
◆Socket(InetAddress/String remoteAddress, int port, InetAddress localAddr, int localPort)::创建连接到指定远程主机、远程端口的Socket,并指定本地IP地址和本地端口号,适用于本地主机有多个IP地址的情形。
上面两个构造器中指定远程主机时既可使用InetAddress来指定,也可直接使用String对象来指定,但程序通常使用String对象(如192.168.1.1)来指定远程IP地址。当本地主机只有一个IP地址时,使用第一个方法更为简单。如下代码所示。
//创建连接到本机、30000端口的SocketSocket s = new Socket("127.0.0.1", 30000);//下面就可以使用Socket进行通信...
0 0
- 17.3 基于TCP协议的网络编程
- 基于TCP协议的网络编程
- 基于Tcp协议的网络编程
- 基于TCP协议的网络编程
- 基于TCP/IP协议的网络编程
- 基于TCP协议的网络编程:
- 网络编程之基于TCP协议的网络编程
- 基于TCP协议的网络编程--socket编程(1)
- 基于TCP协议的网络编程--socket编程(2)
- Socket编程基础--基于TCP协议的网络编程
- 基于TCP/IP协议的网络编程—Socket编程
- 基于UDP、TCP协议的C#网络编程之一
- 【转载】 基于UDP、TCP协议的C#网络编程
- socket编程-- 基于TCP协议的网络程序
- 基于UDP、TCP协议的C#网络编程
- socket编程-- 基于TCP协议的网络程序
- socket编程-- 基于TCP协议的网络程序
- 基于TCP协议的网络编程学习笔记(1)
- RAC11gR2日志
- Java正则表达式入门
- 使用etalage插件快速做出jquery放大镜效果
- java学习笔记之WeakHashMap 、IdentityHashMap、EnumMap
- Google apac 在线笔试round2
- 17.3 基于TCP协议的网络编程
- 织梦内容页文档页,php逻辑调用dede:field.price控制显示原价优惠价
- JVM参数调优会调出坑
- HTML+CSS+JavaScript语言重温感想
- libevent学习笔记1:一个用libevent实现的回显服务器
- u8g.lib在128x64的使用
- Springmvc+mybatis 问题总结(续ing)
- 验证XCODE是否中毒的方法
- unity学习前篇