网络编程-Winsock (五)

2014-11-24 01:44:17 · 作者: · 浏览: 10

SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);//创建TCP套接字

sockaddr_in socketAddr;
socketAddr.sin_family = PF_INET;
socketAddr.sin_addr.S_un.S_addr = inet_addr("127.1.1.0");
socketAddr.sin_port = htons(827);

connect(s,(SOCKADDR*)&socketAddr,sizeof(SOCKADDR));

char szBuffer[MAXBYTE] = {0};

recv(s,szBuffer,MAXBYTE,NULL);

printf("szBuffer = %s \r\n",szBuffer);

closesocket(s);

WSACleanup();//释放套接字库


return 0;
}

#include
#include
#pragma comment (lib,"ws2_32")//显示连接套接字库

int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//初始化套接字库

SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);//创建TCP套接字

sockaddr_in socketAddr;
socketAddr.sin_family = PF_INET;
socketAddr.sin_addr.S_un.S_addr = inet_addr("127.1.1.0");
socketAddr.sin_port = htons(827);

connect(s,(SOCKADDR*)&socketAddr,sizeof(SOCKADDR));

char szBuffer[MAXBYTE] = {0};

recv(s,szBuffer,MAXBYTE,NULL);

printf("szBuffer = %s \r\n",szBuffer);

closesocket(s);

WSACleanup();//释放套接字库


return 0;
}


基于UDP协议的“Hello World !”
UDP客户端与服务器的编写方法与TCP的相似,只要主要其中的差别就行了。

服务器端代码如下:

[cpp] #include
#include
#pragma comment (lib,"ws2_32")

int main(int argc, char* argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);

SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_UDP);

sockaddr_in sockAddr;
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockAddr.sin_family = PF_INET;
sockAddr.sin_port = htons(827);

bind(s,(SOCKADDR*)&sockAddr,sizeof(SOCKADDR));

sockaddr_in clientAddr;
int len=sizeof(sockaddr_in);
char buf[MAXBYTE] = {0};
recvfrom(s,buf,MAXBYTE,0,(SOCKADDR*)&clientAddr,&len);
printf("%s \r\n",buf);

sendto(s,"hello world client",strlen("hello world client")+sizeof(char),0,(SOCKADDR*)&clientAddr,sizeof(SOCKADDR));
closesocket(s);

WSACleanup();

return 0;
}

#include
#include
#pragma comment (lib,"ws2_32")

int main(int argc, char* argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);

SOCKET s=socket(PF_INET,SOCK_STREAM,IPPROTO_UDP);

sockaddr_in sockAddr;
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockAddr.sin_family = PF_INET;
sockAddr.sin_port = htons(827);

bind(s,(SOCKADDR*)&sockAddr,sizeof(SOCKADDR));

sockaddr_in clientAddr;
int len=sizeof(sockaddr_in);
char buf[MAXBYTE] = {0};
recvfrom(s,buf,MAXBYTE,0,(SOCKADDR*)&clientAddr,&len);
printf("%s \r\n",buf);

sendto(s,"hello world client",strlen("hello world client")+sizeof(char),0,(SOCKADDR*)&clientAddr,sizeof(SOCKADDR));
closesocket(s);

WSACleanup();

return 0;
}


客户端代码如下:


[cpp] #include
#include
#pragma comment (lib,"ws2_32.lib")

int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);

SOCKET s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

sockaddr_in sockAddr;
sockAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(827);

sendto(s,"hello world server",strlen("hello world server")+sizeof(char),0,(SOCKADDR*)&sockAddr,sizeof(