WinCE Socket套接字编程
来源:互联网 发布:韩春雨 最新 知乎 编辑:程序博客网 时间:2024/05/12 11:18
Socket套接字编程
程序员通过调用Sockets的API函数来完成网络通讯程序的编写,有关网络通讯的基础知识参看“桌面Windows网络编程”部分文档。
1 WSAStartup函数用来加载相应版本的Socket动态链接库
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
wVersionRequested:指定要加载的WinSock库的版本,高位字节指定副版本,低位字节指定主版本。通过MAKEWORD(x,y)宏可以方便获取该参数的正确值,其中x是高位字节,y是低位字节。Windows CE中,最高版本为2.2。
lpWSAData:存储所加载的库的版本信息。WSADATA结构体如下:
typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR* lpVendorInfo;
} WSADATA, *LPWSADATA;
wVersion:打算使用的WinSock库版本。
wHighVersion:存储现有的WinSock库的最高版本。
szDescription和szSystemStatus由特定的WinSock实施方案设定,事实上没有使用。
iMaxSockets和iMaxUdpDg一般不要使用。
lpVendorInfo:为WinSock实施方案有关的厂商预留,可不必关心。
返回值:函数执行成功,返回0,否则返回SOCKET_ERROR,调用WSAGetLastError函数可以得到具体的错误信息。
2 WSACleanup函数与WSAStartup函数配对使用,用来终止对WinSock动态库的使用,同时释放相应的资源。
int WSACleanup (void);
返回值:函数执行成功,返回0,否则返回SOCKET_ERROR,调用WSAGetLastError函数可以得到具体的错误信息。
下面是MSDN上这两个函数使用的示例代码:
——————————————————————————————————
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions later */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return;
}
/* The WinSock DLL is acceptable. Proceed. */
3 socket函数创建套接字
SOCKET socket(
int af,
int type,
int protocol
);
af:指定地址族,设置为AF_INET即可。
type:指定套接字类型。基于TCP协议的网络程序,该参数设置为SOCK_STREAM;基于UDP协议的网络程序,该参数设置为SOCK_DGRAM。
Protocol:指定协议类型,基于TCP协议的网络程序,该参数可以设置为IPPROTO_TCP;基于UDP协议的网络程序,该参数可以设置为IPPROTO_UDP。通常这个参数可以指定为0,那么系统会根据地址格式和套接字类别,自动选择一个合适的协议。
返回值:函数执行成功,返回新创建的套接字,执行失败,返回INVALID_SOCKET。
如:
SOCKET m_UDPSocket;
m_UDPSocket = socket(AF_INET, SOCK_DGRAM, 0); /* 创建UDP套接字*/
或者
m_UDPSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
4 closesocket函数关闭套接字
int closesocket(
SOCKET s
);
当套接字不再使用时,应该通过closesocket函数将其关闭以释放资源。参数s指向socket函数所返回的套接字句柄。
返回值:函数执行成功返回0,执行失败返回SOCKET_ERROR。
5 shutdown函数“从容中断连接”
int shutdown(
SOCKET s,
int how
);
当套接字不再使用时,先调用这个函数来禁止发送和接收数据,然后再调用closesocket函数关闭套接字。这样能够防止数据丢失。
s:指定要关闭的套接字。
how:设置为SD_RECEIVE,禁止再调用接收函数;设置为SD_SEND,禁止再调用发送函数;设置为SD_BOTH表示取消收发两端的收发操作。
返回值:函数执行成功返回0,执行失败返回SOCKET_ERROR。
- WinCE Socket套接字编程
- Socket套接字编程
- socket套接字编程
- socket 套接字编程
- socket套接字编程
- PHP套接字编程(socket)
- 套接字socket高级编程
- 套接字和socket编程
- 【socket】TCP套接字编程
- Java套接字Socket编程
- ios Socket套接字编程
- JavaSE 套接字Socket编程
- socket套接字编程函数
- Windows套接字编程/Socket
- 网络编程socket套接字
- iOS socket 套接字编程
- Socket编程--套接字概念
- 套接字(socket)与socket 编程
- linux select函数
- JAVA平台
- java笔记1java语言基础
- PHP获取文件扩展名方法总结
- 嵌入式学习26招(转)
- WinCE Socket套接字编程
- VC回调函数定义和使用
- java笔记2面向对象和数组
- DrawText的使用
- java笔记3继承和多态
- WPF程序设计读书笔记(2-1)
- 请不要错过爱你的人
- XAMPP安装不能有中文目录
- DropDownList清空数据