网络
文章平均质量分 69
普通网友
这个作者很懒,什么都没留下…
展开
-
关于recv()的一种特殊情况处理(多条消息作为了一条接收)
套接字接收函数如下:recv(int fdsock, void * buf, size_t bufsize, int flags);该函数应该是对方发送一条,接收方接收一条;而且接收方不一定要接收bufsize个字节后才返回;但是在特殊情况下,对方连续发送信息时(用for()循环发送N条信息)时,发现一个状况:第1条消息接收正确,而之后的消息作为一次接收处理了...很是奇怪原创 2012-04-18 23:23:23 · 1607 阅读 · 0 评论 -
C#端和C++端套接字通信中遇到的编码问题
环境:Windows, VS2010注意事项:Windows下的wchar_t与Linux下的wchar_t不同(在Windows下占2字节;而在Linux下则占4字节)正题:由于C#端和C++端的编码方式不同,因此在通过套接字编程时,会有一些问题C#使用Unicode码,一个char占两个byte;而C++使用ANSI码,一个char占用一个byte所以,为了统一两者之间的不原创 2011-12-13 09:24:54 · 2089 阅读 · 0 评论 -
Program received signal SIGPIPE, Broken pipe.
参考:http://blog.csdn.net/hejianhua/article/details/5994915原创 2011-12-09 12:43:42 · 826 阅读 · 0 评论 -
C# C++ 结构体匹配问题
背景:在套接字的一端,C#中定义了固定的结构体,然后用该结构体给C++端的另外一端发送消息。代码:结构体如下所示:typedef struct _Info{ char name[16]; char cipher[16]; char signature[256];}Info;C#端代码如下: Info myInfo; s原创 2011-12-06 13:13:23 · 939 阅读 · 0 评论 -
调用setsockopt()函数时的WSAEINVAL错误
这个问题是在实现多播实验的时候出现的一个错误,找出错误原因的方法比较笨,之后如果看到有好的方法再做更新检查错误代码如下: //加入多播组 ip_mreq mcast; mcast.imr_interface.S_un.S_addr=INADDR_ANY; mcast.imr_multiaddr.S_un.S_addr=inet_addr("234.5.6.7");int nRet=原创 2011-10-26 12:53:07 · 2242 阅读 · 0 评论 -
完成端口之个人理解
下文只是对完成端口的简单介绍,有些是自己的理解,可能不太正确。详细内容可以查看《Windows核心编程》完成端口(简称IOCP)是最为复杂的Windows内核对象,同时也是最有效的异步I/O模型。IOCP完成端口可以绑定一个文件句柄(HANDLE),以对其进行异步I/O。系统负责具体的I/O操作,当完成之后由I/O系统把完成消息(completion packet )通过函数(自动调用)P原创 2011-11-13 10:28:23 · 2003 阅读 · 0 评论 -
linux socket编程 篇二
转自: http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时原创 2011-08-01 09:27:21 · 429 阅读 · 0 评论 -
使用TCP协议实现传输文件
转载自“云的天空”cn博文: 程序分为发送端和接收端。首先在传输文件数据之前,发送端会把将装有文件名称和文件长度等信息的数据包发送至接收端。接收端收到文件名称和文件长度信息后会创建好空白文件。接着开始传输文件数据。下面介绍实现功能的主要过程:1.创建套接字、绑定、监听、连接、接受连接//创建TCP协议的套接字 m_Socket = socket(AF_INET, SOCK_S转载 2011-08-03 08:40:49 · 1336 阅读 · 0 评论 -
套接字传输文件的试验
原先对文件总是有一种莫名的抗拒,原因未知,最近做东西的时候需要用套接字传送文件、图片之类的东西,没办法,只好硬着头皮上了。做了一个小实验,下面是几点心得:(1)网上查了一些资料,发现其实套接字传送文件和传输文字没什么区别的,因为它只负责发送和接收,而对到底是什么样类型的数据是并不感冒的(以字节为单位传输)(2)发送文件时,需要先把文件以二进制格式打开,读取到内存中,然后再发送;(3原创 2011-11-04 13:25:23 · 2907 阅读 · 0 评论 -
TCP连接状态及表示意义
查看网络状态的命令为:netstat 在Windows下,如果需要查看TCP连接,可以用:netstat -p TCP;对应UDP连接,可以用:netstat -p UDP在Linux下,查看TCP连接的命令为:netstat -t;对应UDP连接为:netstat -uTCP连接的几种可能状态如下:1、LISTENING状态 处于侦听(LISTENING)状态。 St原创 2011-11-03 09:51:20 · 1314 阅读 · 0 评论 -
C# 套接字的select选择模型
select选择模型是套接字进行异步IO的基本模式,非常方便。在C++中,select()函数的原型如下:int select( __in int nfds, __in_out fd_set* readfds, __in_out fd_set* writefds, __in_out fd_set* exceptfds,原创 2011-11-17 11:23:43 · 6898 阅读 · 0 评论 -
使用套接字实现广播通信
广播消息使用UDP通信协议1. Windows需要先调用WinSock版本,然后再创建套接字;而在Linux下可以直接创建套接字;注意:创建UDP套接字socket(AF_INET, SOCK_DGRAM, 0);2.调用setsockopt()函数设置套接字;函数说明如下:int setsockopt(SOCKET s,int level,int optname,原创 2011-10-25 15:27:34 · 2397 阅读 · 0 评论 -
Socket.Connected不能在调试时作为套接字是否连接的判断依据
以下内容摘自微软的页面:http://technet.microsoft.com/zh-cn/magazine/system.net.sockets.socket.connected(VS.90).aspx Connected 属性获取截止到最后的 I/O 操作时 Socket 的连接状态。当它返回 false 时,表明 Socket要么从未连接,要么已断开连接。Connected 属原创 2012-02-23 10:12:31 · 6812 阅读 · 0 评论 -
查看、修改网卡的MTU值
在百度上面找到的:http://zhidao.baidu.com/question/110409984.html(1) 运行regedit (2) 浏览到: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces (3) Interfaces下有多个子项,每个子项对应一个网卡。转载 2012-02-22 10:44:54 · 4274 阅读 · 0 评论 -
返回局部变量的引用可能引起的错误
使用环境:ubuntu 11.10 C++自己创建了一个套接字的类MySock当调用Accept()方法时,返回一个MySock &类型的值;MySock & Accept();出现错误:MySock connSock=lstnSock.Accept();当调用connSock.Recv();方法进行接收时,接收到的字节数为-1(即接收错误);提示错误为:EB原创 2012-04-18 23:19:01 · 995 阅读 · 0 评论 -
Program received signal SIGPIPE, Broken pipe
转自:http://www.diybl.com/course/3_program/c++/cppjs/20090831/173152.html我写了一个服务器程序, 在Windows下在cygwin环境编译后执行, 然后用C#写了多线程客户端进行压力测试. 程序一直运行正常. 但当在Linux下测试时, 总是莫名退出. 最后跟踪到是write调用导致退出. 用gdb执行程序, 退出时提示"Br转载 2012-04-17 13:37:13 · 7524 阅读 · 0 评论 -
windows.h与winsock2.h的包含顺序引起的问题
使用环境:Windows、C++错误描述:在项目中用到套接字和线程,对应包含头文件 #include 和#include 但是在编译的时候碰到很多错误,而且几乎都是“ 类型/链接重定义 ”、“ 找不到标识符 ”之类的错误,而且几乎都出现在 winsock2.h和ws2def.h 中;例如:error C2011: “sockaddr_in”:“struct”类型重定义原创 2012-04-25 16:49:21 · 3765 阅读 · 0 评论 -
C#端和C++端套接字通信中的几个问题
(1) 从字符串转为固定大小的字符数组如:定义固定大小的结构体:(使用命名空间:using System.Runtime.InteropServices;) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct OnlineUsrInfo { [Marsh原创 2011-12-19 22:59:47 · 1358 阅读 · 1 评论 -
Socket.Select()函数使用不当引发的问题(关于套接字在线程间传递是否可行的验证)
使用环境:VS2010 C#做东西的时候碰到一个问题:在后台中,创建了一个监听线程,用来监听是否有连接到监听地址的请求,如果有,则加入监听套接字集中;(这样的话,一个线程就可以接收N个套接字的信息)创建了一个接收线程,对监听套接字集中的套接字进行消息接收,并将该消息显示出来;其中,监听套接字集中有与服务器连接的套接字srvCommSock出错状况:类似下图所示即原创 2012-03-13 14:18:29 · 2270 阅读 · 0 评论 -
远程主机强迫关闭了一个现有的连接。
使用环境:VS2010 C#出错状况:发送端发送一串字符,显示“成功发送了38字节”;但接收端却在Receive()函数的时候检测到了SocketException,显示“远程主机强迫关闭了一个现有的连接。”代码如下:发送端: try { Socket clientSock = new Sock原创 2012-03-13 13:15:45 · 45642 阅读 · 5 评论 -
文件的断点续传
转自:http://apps.hi.baidu.com/share/detail/31497239所谓的断点续传就是指:文件在传输过程式中被中断后,在重新传输时,可以从上次的断点处开始传输,这样就可节省时间,和其它资源。实现关键在这里有两个关键点:其一是检测本地已经下载的文件长度和断点值;其二是在服务端调整文件指针到断点处实现方法:我们用一个简单的方法来实现断点续传的功能:转载 2012-03-01 08:46:08 · 5223 阅读 · 2 评论 -
文件的断点传输
转自:http://apps.hi.baidu.com/share/detail/31497239所谓的断点续传就是指:文件在传输过程式中被中断后,在重新传输时,可以从上次的断点处开始传输,这样就可节省时间,和其它资源.实现关键在这里有两个关键点,其一是检测本地已经下载的文件长度和断点值,其二是在服务端调整文件指针到断点处实现方法我们用一个简单的方法来实现断点续传的功能.在传输转载 2012-03-01 08:37:29 · 150 阅读 · 0 评论 -
TCP的连接和关闭
连接请求协议1) 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。这个SYN段为报文段1。2) 服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认(ACK)序号设置为客户的ISN加1以对客户的SYN报文段进行确认(客户端会验证ACK是否为自己应该收到的序号)。一个SYN将占用一个序号。3) 客户必须将确认序号设置原创 2011-11-03 16:51:35 · 594 阅读 · 0 评论 -
基于Socket的UDP和TCP编程介绍
转载:http://www.embedu.org/column/column179.htm一、概述TCP(传输控制协议)和UDP(用户数据报协议)是网络体系结构TCP/IP模型中传输层中的两个不同的通信协议。TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(stream socket)的一种。UDP:用户数据报协议。UDP是一转载 2011-08-03 08:03:50 · 742 阅读 · 0 评论 -
C# 获取主机对应的IP地址和主机名
一、Dns类介绍:命名空间:using System.Net;主要功能:提供简单的域名解析功能主要方法:(1) GetHostEntry() :将主机名或 IP 地址解析为 IPHostEntry 实例;(2) BeginGetHostEntry(String, AsyncCallback, Object):将主机名或 IP 地址异步解析为 IPHostEntry 实例;原创 2012-02-27 14:39:08 · 8548 阅读 · 1 评论 -
Windows Socket和Linux Socket编程的区别
SOCKET在原理上应该是一样的,只是不同系统的运行机置有些不同。Socket 编程 windows到Linux代码移植遇到的问题 1、一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=15862、网络 socket相关程序从windows移植到linux下需要注意的 1)头文件 windows下winsoc原创 2011-08-03 15:38:42 · 4443 阅读 · 1 评论 -
获取本机IP信息
不能直接获取本机IP信息确实挺纠结的,感觉微软应该给出这样的API接口C++中的实现:一般实现都需要先通过gethostname()函数获取本机的名字,然后再调用gethostbyname()函数来获取主机的信息。gethostname()函数的说明如下:int gethostname(char FAR *name, int namelen);其中,name是主机的名字,是输出原创 2011-10-25 14:05:54 · 837 阅读 · 0 评论 -
Linux/Unix服务器套接字编程异步I/O模式选择
最近做一个套接字编程的应用,服务器使用Unix。对于套接字异步的选择,一般有两种模式,一种是对每个新到来的连接都创建一个线程(pthread),可以使用线程池对其进行管理;另外一种是使用单进程下的异步I/O,通过函数select()来实现;而至于这两者那一种效率更高就原创 2011-08-11 08:05:24 · 1654 阅读 · 0 评论 -
winsock编程宝典之获取网络资讯(有修改)
转载:http://blog.csdn.net/msgsnd/article/details/2153768获取网路资讯在前两期的文章中,笔者介绍了如何在 Winsock 环境下建立主从架构的TCP Socket,以及如何利用 Socket 来收送资料;今天,我们接著来看一看如何转载 2011-07-09 15:38:18 · 675 阅读 · 0 评论 -
winsock编程宝典之资料库函数
Winsock 提供的资料库函数Winsock 也提供了同步与非同步的网路资料库函式;不过读者们要知道,此处的资料库指的并非如 Informix, Oracle 等商业用途的资料库系统,而是指主机IP 位址及名称、well-known 服务的名称及 Socket 型态及所转载 2011-08-09 10:38:14 · 1163 阅读 · 0 评论 -
Windows下 面向连接的 UDP通信 实验
昨天转了篇Linux下面向连接的UDP通信,想做个实验,看看是否能实现“面向连接”实验结果表明是:UDP即便使用了connect()函数进行连接,传输失败仍然不会有任何的提示。实验步骤如下服务器端:1. 建立套接字;2. 绑定套接字;3. 用recvfro原创 2011-08-07 08:52:00 · 1668 阅读 · 0 评论 -
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值
转载自:http://blog.csdn.net/eroswang/article/details/56425501、阻塞模式与非阻塞模式下recv的返回值各代表什么意思?有没有区别?(就我目前了解阻塞与非阻塞recv返回值没有区分,都是 0接收到数据大小,特别:返回值转载 2011-08-08 13:45:07 · 572 阅读 · 0 评论 -
Linux下 面向连接的 UDP通信
UDP 程序设计UDP Server程序1、编写UDP Server程序的步骤 (1)使用socket()来建立一个UDP socket,第二个参数为SOCK_DGRAM。 (2)初始化sockaddr_in结构的变量,并赋值 这里使用“08”作为服务程原创 2011-08-06 12:39:42 · 2705 阅读 · 0 评论 -
一种新的 Web 服务器推送技术 - comet
转载自:http://www.cnblogs.com/Music/archive/2011/04/22/about-comet-from-baidu-baike.html今天看到了一篇文章,近几年随着 Web 浏览器的增强,越来越多的应用由 C/S 转变为 B/S,但为了达到转载 2011-08-05 08:03:58 · 773 阅读 · 0 评论 -
套接字Select I/O模型
转载自云的天空博文注释:windows下的异步I/O模式有:select I/O,overlap I/O,完成端口等几种模式。具体参考《Windows 网络与通信程序设计》。select模型select(选择)模型是winsock中常见的I/O模型。之所以称其为“se转载 2011-08-03 08:48:21 · 462 阅读 · 0 评论 -
Linux下Socket编程
转自:aobai219的博文:http://blog.csdn.net/aobai219/article/details/1596964什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TC转载 2011-08-01 09:23:13 · 379 阅读 · 0 评论 -
Linux下 命令行配置网络
转自:http://www.cnblogs.com/tigertall/archive/2010/02/01/1661308.html 因为格了系统,重新安装了VMware,加载了原来的虚拟机后,因为VMware虚拟网卡Vmnet8的地址已经变了,所以要改变下客户操作系转载 2011-07-30 19:23:47 · 887 阅读 · 0 评论 -
winsock编程宝典之收送消息
转载:http://blog.csdn.net/msgsnd/article/details/2153768收送资料在前一期的文章中,笔者为大家介绍了如何在 Winsock 环境下建立主从架构(Client/Server)的 TCP socket 的连接建立与关闭;今天笔者将继续转载 2011-07-09 15:35:46 · 1082 阅读 · 0 评论 -
socket编程,从控制台转到MFC下碰到的几个问题
在使用VC6.0做东西时,产生几个典型的错误,特列如下,以备后查。错误1:fatal error C1010:unexpected end of file while looking for precompiled header问题很奇怪,在控制台项目下编译时,完全正确,原创 2011-08-17 13:24:30 · 981 阅读 · 0 评论 -
Unix select()的使用
转载:http://fanqiang.chinaunix.net/a4/b7/20010913/0900001283.html,部分不明白的地方做了补充用过 WinSock API 网友们知道:WinSock 编程中有一很方便的地方便是其消息驱动机制,不管是底层API 的 W原创 2011-08-18 10:57:40 · 1115 阅读 · 0 评论