|
|
发表于 2004-10-26 10:52:00
|
显示全部楼层
Re:关于socket的入门级问题
大概过程是:
WSADATA wsaData;
SOCKET sockListen,sockWork;
SOCKADDR_IN addr;
WSAStartup(MAKEWORD(2,2), &wsaData);
sockListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sockListen == INVALID_SOCKET)
{
closesocket(sockListen);
//退出
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port); //port是端口号
addr.sin_addr.s_addr = INADDR_ANY;//服务端这么写就行了
if(bind(sockListen ,(struct sockaddr*)&addr,sizeof(addr))==SOCKET_ERROR)
{
//绑定端口失败
closesocket(ListenSock);
//退出
}
if(listen(ListenSock, 5)==SOCKET_ERROR )//设置侦听模式
{
//设置监听失败
}
再往下就不一样了,有不同的模式
其中一种,比较原始一点儿
///////////////////////////
unsigned long i=1;
//ioctlsocket(sockListen,FIONBIO,&i);//可以用阻塞或非阻塞,根据需要而定
sockWork = accept(sockListen,NULL,NULL);
成功以后就可以用sockWork收发数据了
///////////////////////////
用完以后别忘了
用closesocket关闭端口
然后WSACleanup(); |
|