分类: 网络编程 2013-05-23 00:37 3514人阅读 收藏 举报
TCP程序

TCPServer
-
-
- #include <stdio.h>
- #include <WinSock2.h>
- #pragma comment(lib,"ws2_32.lib")
- #define BUF_SIZE 64
- void main()
- {
- WSADATA wsd;
- if (WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup() failed! erron=%d\n",GetLastError());
- return;
- }
- SOCKET sServ;
- if ((sServ=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == INVALID_SOCKET)
- {
- printf("socket() failed! errno=%d\n",WSAGetLastError());
- WSACleanup();
- return;
- }
-
-
- SOCKADDR_IN addrServ;
- addrServ.sin_family=AF_INET;
- addrServ.sin_addr.S_un.S_addr=INADDR_ANY;
- addrServ.sin_port=htons(5000);
- if (bind(sServ,(SOCKADDR*)&addrServ,sizeof(addrServ)) == SOCKET_ERROR)
- {
- printf("bind() failed!errno=%d\n",WSAGetLastError());
- closesocket(sServ);
- WSACleanup();
- return;
- }
-
- if (listen(sServ,2) == SOCKET_ERROR)
- {
- printf("listen() failed! errno=%\n",WSAGetLastError());
- closesocket(sServ);
- WSACleanup();
- return;
- }
-
- SOCKADDR_IN addrClient;
- SOCKET sClient;
- int len=sizeof(addrClient);
- if ((sClient=accept(sServ,(SOCKADDR*)&addrClient,&len)) == INVALID_SOCKET)
- {
- printf("accept() failed! error=%d\n",WSAGetLastError());
- closesocket(sServ);
- WSACleanup();
- return;
- }
-
-
- char buf[BUF_SIZE];
- ZeroMemory(buf,BUF_SIZE);
- if (recv(sClient,buf,BUF_SIZE,0) == SOCKET_ERROR)
- {
- printf("recv() failed! error=%d\n",WSAGetLastError());
- closesocket(sClient);
- closesocket(sServ);
- WSACleanup();
- return;
- }
- printf("%s\n",buf);
- closesocket(sClient);
- closesocket(sServ);
- WSACleanup();
- system("pause");
- return;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
TCPClient
-
-
- #include <stdio.h>
- #include <WinSock2.h>
- #pragma comment(lib,"ws2_32.lib")
- #define BUF_SIZE 64
- void main()
- {
- WSADATA wsd;
- if (WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup() failed! erron=%d\n",GetLastError());
- return;
- }
-
- SOCKET sHost;
- if ((sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) == INVALID_SOCKET)
- {
- printf("socket() failed! errno=%d\n",WSAGetLastError());
- WSACleanup();
- return;
- }
-
-
- SOCKADDR_IN servAddr;
- servAddr.sin_family=AF_INET;
- servAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
- servAddr.sin_port=htons(5000);
- if (connect(sHost,(SOCKADDR*)&servAddr,sizeof(servAddr)) == SOCKET_ERROR)
- {
- printf("connect() failed! errno=%d\n",WSAGetLastError());
- closesocket(sHost);
- WSACleanup();
- return;
- }
-
-
- char buf[BUF_SIZE];
- ZeroMemory(buf,BUF_SIZE);
- strcpy(buf,"MyTCP");
- if (send(sHost,buf,strlen(buf),0) == SOCKET_ERROR)
- {
- printf("send() failed! erron=%d\n",WSAGetLastError());
- closesocket(sHost);
- WSACleanup();
- return;
- }
-
- closesocket(sHost);
- WSACleanup();
- system("pause");
- return;
- }
-
-
-
-
-
-
-
-
-
-
-
-
TCP API
UDP程序

无连接协议的套接字调用时序
UDPServer
-
-
- #include <stdio.h>
- #include <WinSock2.h>
- #pragma comment(lib,"ws2_32.lib")
- #define BUF_SIZE 64
- void main()
- {
- WSADATA wsd;
- if (WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup failed,errno=%d\n",GetLastError());
- return;
- }
- SOCKET sockServ;
- if ((sockServ=socket(AF_INET,SOCK_DGRAM,0)) == INVALID_SOCKET)
- {
- printf("socket() failed,errno=%d\n",WSAGetLastError());
- WSACleanup();
- return;
- }
-
- int nBufLen;
- int nOptLen=sizeof(nBufLen);
- if (getsockopt(sockServ,SOL_SOCKET,SO_RCVBUF,(char*)&nBufLen,&nOptLen) == SOCKET_ERROR)
- {
- printf("getsockopt() failed,errno=%d\n",WSAGetLastError());
- }
-
- nBufLen *=10;
- if (setsockopt(sockServ,SOL_SOCKET,SO_RCVBUF,(char*)&nBufLen,nOptLen) == SOCKET_ERROR)
- {
- printf("setsockopt() failed,errno=%d\n",WSAGetLastError());
- }
-
- int newRcvBuf;
- if (getsockopt(sockServ,SOL_SOCKET,SO_RCVBUF,(char*)&newRcvBuf,&nOptLen) == SOCKET_ERROR)
- {
- printf("second getsockopt() failed,errno=%d\n",WSAGetLastError());
- }
- if (newRcvBuf != nBufLen)
- {
- printf("set bufLen size=size*10 failed\n");
- }
-
-
- SOCKADDR_IN addrServ;
- addrServ.sin_family=AF_INET;
- addrServ.sin_addr.s_addr=INADDR_ANY;
- addrServ.sin_port=htons(5000);
- if (bind(sockServ,(SOCKADDR*)&addrServ,sizeof(addrServ)) == SOCKET_ERROR)
- {
- printf("bind() failed,errno=%d\n",WSAGetLastError());
- closesocket(sockServ);
- WSACleanup();
- return;
- }
-
-
- SOCKADDR_IN addrClient;
- int addrClientLen=sizeof(addrClient);
- char buf[BUF_SIZE];
- ZeroMemory(buf,BUF_SIZE);
- if (recvfrom(sockServ,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&addrClientLen) == SOCKET_ERROR)
- {
- printf("recvfrom() failed,errno=%d\n",WSAGetLastError());
- closesocket(sockServ);
- WSACleanup();
- return;
- }
-
- printf("%s\n",buf);
- closesocket(sockServ);
- WSACleanup();
- system("pause");
- return;
- }
-
-
-
-
-
-
-
-
UDPClient
-
-
- #include <stdio.h>
- #include <WinSock2.h>
- #pragma comment(lib,"ws2_32.lib")
- #define BUF_SIZE 64
- void main()
- {
- WSADATA wsd;
- if (WSAStartup(MAKEWORD(2,2),&wsd) != 0)
- {
- printf("WSAStartup() failed,errno=%d\n",GetLastError());
- return;
- }
- SOCKET sClient;
- if ((sClient=socket(AF_INET,SOCK_DGRAM,0)) == INVALID_SOCKET)
- {
- printf("socket() failed,errno=%d\n",WSAGetLastError());
- WSACleanup();
- return;
- }
- char buf[BUF_SIZE];
- ZeroMemory(buf,BUF_SIZE);
- strcpy(buf,"MyUDP");
-
-
- SOCKADDR_IN addrServ;
- int addrServLen=sizeof(addrServ);
- addrServ.sin_family=AF_INET;
- addrServ.sin_addr.s_addr=inet_addr("127.0.0.1");
- addrServ.sin_port=htons(5000);
- if (sendto(sClient,buf,BUF_SIZE,0,(SOCKADDR*)&addrServ,addrServLen) == SOCKET_ERROR)
- {
- printf("sendto() failed,errno=%d\n",WSAGetLastError());
- closesocket(sClient);
- WSACleanup();
- return;
- }
- closesocket(sClient);
- WSACleanup();
- system("pause");
- return;
- }
-
-
-
-
-
-
-
-
-
UDP API
|