随笔分类 -  [04]Socket/通信

摘要:[代码]下面是select模型的举例:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1SOCKETm_sockSrv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);2if(m_sockSrv==INVALID_SOCKET)3 {4  cout"Error:"WSAGetLastError()endl;5returnfalse;6 }7SOCKADDR_INaddrSrv;8 addrSrv.s 阅读全文
posted @ 2011-01-06 16:48 zhouli 阅读(520) 评论(0) 推荐(0)
摘要:本文参考于《Windows网络与通信程序设计》基于WSAEventSelect模型的服务器设计对于WSAEventSelect模型,一个工作线程最多能够处理64个套接字,故采用线程池来管理大于64个套接字的请求。//定义套接字结构体typedef struct _SOCKET_OBJ{  SOCKET s;          //套接字句柄  HANDLE event;        //与此套接... 阅读全文
posted @ 2010-10-28 11:43 zhouli 阅读(557) 评论(0) 推荐(0)
摘要:编译环境VS2008,UNICODE编码#include <atlconv.h>BYTE m_MAC[10][6];//the mac address of this computer, 10 NICsint m_nMAC;void CGetAdapterMacDlg::GetMac(){  PIP_ADAPTER_INFO pAdapterInfo;  PIP_ADAPTER_INF... 阅读全文
posted @ 2010-08-24 16:31 zhouli 阅读(672) 评论(0) 推荐(1)
摘要:BOOL GetLocalHostInfo(){  //得到主机名称  int nComputerNameLen;  nComputerNameLen = MAX_COMPUTERNAME_LENGTH + 1;  if(SOCKET_ERROR == gethostname(m_chLocalHostName,nComputerNameLen))    return FALSE;  //////... 阅读全文
posted @ 2010-08-20 16:47 zhouli 阅读(254) 评论(0) 推荐(0)
摘要:我们为什么要使用Socket I/O模型呢?还得从Socket的阻塞和非阻塞说起。在网上看过一篇讲解I/O模型的文章,它举过一个例子觉得挺好,那就是收信的例子。比如:老周在等待他女儿从美国寄过来的信件,老周住三楼,信箱在一楼。有以下几种情况:第一:老周一直守在信箱旁边,直到收到信件为止。这样太费精力。这就好比是阻塞套接字。第二:老周到信箱那里看一下,发现还没有来,就马上回家了。这就好比非阻塞套接字... 阅读全文
posted @ 2010-07-30 11:35 zhouli 阅读(594) 评论(1) 推荐(1)
摘要:Socket(套接字) ◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。 ◆Socket有五种不同的类型: 1、流式套接字(stream soc... 阅读全文
posted @ 2010-07-17 10:58 zhouli 阅读(1125) 评论(0) 推荐(0)
摘要:首先加载套接字库#include <winsock2.h> //套接字库头文件还需要为工程添加连接ws2_32.libWORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(2,2);err = WSAStartup(wVersionRequested,&wsaData);if(er... 阅读全文
posted @ 2010-06-05 18:05 zhouli 阅读(663) 评论(0) 推荐(0)
摘要:管道可以实现本地和网络上两个进程的通信服务器端:::OnPipeCreate() //创建命名管道{  hPipe = CreateNamedPipe("\\\\.\\pipe\\MyPipe",PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,    0,1,1024,1024,0,NULL);  if(INVALID_HANDLE_VALUE == hPipe) ... 阅读全文
posted @ 2010-06-05 16:45 zhouli 阅读(263) 评论(0) 推荐(0)
摘要:邮槽 在网络上进程通信为单向方式::OnMailslotRecv() //接收端即为服务器端{  HANDLE hMailslot;  CString mailhostName("");  mailhostName= "\\\\.\\mailslot\\MyRecvMailslot";  hMailslot = CreateMailslot(mailhostName,0,  MAILSLOT_WA... 阅读全文
posted @ 2010-06-05 16:22 zhouli 阅读(270) 评论(0) 推荐(0)
摘要:void CInterChatApp::GetHostInfo(CString &hostIP,CString &hostname){  DWORD dwsize = 255;  char username[255];   if(::GetComputerName(&username[0], &dwsize))   {    hostent *pHost;    p... 阅读全文
posted @ 2010-06-05 15:54 zhouli 阅读(201) 评论(0) 推荐(0)
摘要://加载套接字库WORD wVersionRequested;//套接字库版本信息WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if(err != 0){ //加载失败  return;}if(LOBYTE(wsaData.wVer... 阅读全文
posted @ 2010-05-31 15:42 zhouli 阅读(615) 评论(0) 推荐(0)