socket网络编程,基于socket的网络编程
一、Socket编程,为什么客户端无法接收来自服务器的数据
第一:Socket编程时,永远不要在关闭写(writer)之前关闭读(reader)第二:不管是客户端还是服务端在通过Socket读取数据的时候,在你的数据传输完成后,发送一个结束标记(比如:end),这样在你的while循环里面判断一下数据是否已经传输完毕,完毕后跳出循环,否则由于你的程序就会一直阻塞在readLine()这里,因为你的socket还没有断开,会一直等待你写数据。
二、网络编程中阻塞和非阻塞socket的区别
阻塞:一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.如果在队列中没有请示将会出现什么情况呢?那个方法将会等待一个的到来.这个行为叫阻塞.accept()方法将会阻塞服务器线程直到一个呼叫到来.当5个连接处理完闭之后,服务器退出.任何的在队列中的呼叫将会被取消.
非阻塞:非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的
三、网络编程socketserver的方法有哪些
serversocket监听一个端口、、、使用socket建立一个连接。。。。。。。建议做一下windows下或linux下的socketc/s编程,就更清楚了。。