
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;> Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Socket 服务器: 1先创建 ServerSocket ss = new ServerSocket(端口号)
2 接收请求 Socket s = ssaccept()
3接收消息 先读后写BufferedReader in = new BufferedReader(
new InputStreamReader(sgetInputStream(),"utf-8"));
String str = inreadLine(); PrintWriter out = new PrintWriter
( new BufferedWriter( new OutputStreamWriter(sgetOutputStream())),true);
outprintln("服务器信息");
4关闭流outclose();
inclose();
isclose();
客户端 1、通过IP地址和端口实例化Socket,请求连接服务器
2、获取Socket上的流以进行读写。
3、对流包装进BufferedReader/PrintWriters实例
4、关闭打开的流这个首先要排除程序上的逻辑错误,如果减少了压力是否还有这种现象呢?如果程序没有问题简单的办法就是在服务端校验数据长度,如果长度错误则返回错误代码给客户端要求客户端重新发送消息。有时候网络拥堵,机器的性能也会有影响到结果,需要逐个排除。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)