页首Html代码

返回顶部

随笔分类 -  网络编程Socket

摘要:转自:http://www.cppblog.com/xvsdf100/archive/2013/12/10/204689.html只要接触过c/c++网路编程人都可能会知道select io 模式,网络书籍都说 fd_set {int num; SOCKET arr[64]} 有所限制,因为数组的长度只有64,那么超过64你就不能放,要么你就是用多线程分别实用select.。一些书籍通过改定义宏 使数组的长度变长,但也不实用,不能动态的变化,我总不能定一个非常的长的长度,毕竟是在栈上。 我就在想那么select完全只能在客户端使用,而且套接字还不能超过64。那这不就是一个软肋吗??一直对这个有 阅读全文
posted @ 2013-12-10 14:34 ayanmw 阅读(9487) 评论(1) 推荐(0) 编辑
摘要:windows下的IOCP和 linux下的epoll(#epoll我还没有研究过#) 都是属于socket 网络编程的范畴.不过其特色是:用固定很少的线程去管理成千上万个socket连接.其相当于 异步通信 .普通socket是同步,同步 可能要一个线程一个socket链接 去做,由于系统可以运行的线程数目有限,其就成为一个瓶颈了. IOCP/epoll 可以解决这个问题.首先,你要懂得普通socket TCP的用法:Serve端WSAStartup,socket,bind listen,accept. accept之后就是阻塞的recv和send了.WSACleanup .其中accept 阅读全文
posted @ 2012-10-11 19:21 ayanmw 阅读(4661) 评论(0) 推荐(0) 编辑
摘要:答案是:有。大约 5-15KB ,默认 具体 和什么有关系我也不知道。反正我测试的是:16371字节。win7 x64。可以使用setSockOpt来设置 recvbuf or sndbuf 的大小,但是 我的建议还是控制 每次接受的字节数 控制在一定范围 比如 5KB。因为即使设置了,还是可能会接受到 较小的字节数。关于 Socket的用法 更重要的就是 如何对数据 进行处理了。涉及到 处理的算法。比如 你要接受很大的buffer,可以设置足够的buffer,然后接受,接受少了,继续 接受,但是在buffer+bufferOffset的位置接受,bufferOffset自己根据已接受的字节数 阅读全文
posted @ 2012-09-05 11:15 ayanmw 阅读(6276) 评论(0) 推荐(1) 编辑
摘要:server.cpp#include <WINSOCK2.H>#include <stdio.h>#pragma comment(lib,"ws2_32.lib")int main(int argc,char **argv){ //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err; err=WSAStartup(myVersionRequest,&wsaData); if (!err){ printf("已打开套 阅读全文
posted @ 2012-05-03 16:53 ayanmw 阅读(26255) 评论(0) 推荐(2) 编辑
摘要:最近用vb6写了个程序,本以为简单,但是使用自带的winsocket控件,简直崩溃死我..1.当按钮点击事件全部结束后 .senddata才会发出去,累计了N个sendData 一下子发出去了...中间没有数据发出去.2.server不支持多个客户端同时连接,并且一个客户端连接断开后,就无法再次连接,除非再次开启server的bind端口功能.3.编写多线程麻烦.要实现高级功能都需要使用API函数或许vb.net 2010 还行.毕竟高级的vb.net会很好用.vb关键其语法 很轻松. 感觉比vc压力要小许多.唉 现在居然想用vb6 写程序,真是可笑...找了一个 VB6的 CSocket 的 阅读全文
posted @ 2012-04-27 18:35 ayanmw 阅读(4286) 评论(0) 推荐(0) 编辑
摘要:以前linux下写的socket程序,也就是用的标准的socket bind sock listen accept等,使用的是TCP 阻塞的.今天发现居然有1 原始 2 select 3 poll 4 epoll 等模型,Windows下的暂时不说.这个 弄不清楚..也不知道 有什么 重大区别.参考:http://nicedayyep.iteye.com/blog/89773http://qsky.iteye.com/blog/143944 阅读全文
posted @ 2012-03-28 14:41 ayanmw 阅读(268) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/yeyuangen/article/details/6799575一、问题的引入——socket的引入是为了解决不同计算机间进程间通信的问题1.socket与进程的关系1).socket与进程间的关系:socket 用来让一个进程和其他的进程互通信息(IPC),而Socket接口是TCP/IP网络的API接口函数。2).进程间通信(本机内)进程间通信(不同计算机,要联网)2、socket与文件的关系——如何理解socket是种特殊的I/O?1)Socket最先应用于Unix操作系统,如果了解Unix系统的I/O的话,就很容易了解Socket了,因为S. 阅读全文
posted @ 2012-03-28 14:24 ayanmw 阅读(2774) 评论(0) 推荐(0) 编辑
摘要:原文连接:http://blog.csdn.net/historyasamirror/article/details/5778378同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。本文讨 阅读全文
posted @ 2012-03-28 14:09 ayanmw 阅读(426) 评论(0) 推荐(0) 编辑

页脚Html代码

点击右上角即可分享
微信分享提示