- 注册时间
- 2005-12-20
- 最后登录
- 1970-1-1
|
完成的功能非常简单,发送方(Sender.exe)发送"Hello?"到接收方(Receiver.exe),接收方显示之.- Sender.cpp:
- #include <windows.h>
- #pragma comment(lib,"WS2_32.lib")
- #include <stdio.h>
- int main() {
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2,0);
- WSAStartup(sockVersion,&wsaData);
- char str[20];
- puts("IP address: ");
- gets(str);
- sockaddr_in remoteAddr;
- remoteAddr.sin_family = AF_INET;
- remoteAddr.sin_addr.S_un.S_addr = inet_addr(str);
- remoteAddr.sin_port = htons(80);
- SOCKET senderSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
- connect(senderSocket,(LPSOCKADDR)&remoteAddr,sizeof(remoteAddr));
- char buf[] = "Hello?";
- send(senderSocket,buf,sizeof(buf) - 1,0);
- getchar();
- closesocket(senderSocket);
- WSACleanup();
- return 0;
- }
复制代码- Receiver.cpp:
- #include <windows.h>
- #pragma comment(lib,"WS2_32.lib")
- #include <stdio.h>
- int main() {
- WSADATA wsaData;
- WORD sockVersion = MAKEWORD(2,0);
- WSAStartup(sockVersion,&wsaData);
- sockaddr_in localAddr;
- localAddr.sin_family = AF_INET;
- localAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
- localAddr.sin_port = htons(80);
- SOCKET listenerSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
- bind(listenerSocket,(LPSOCKADDR)&localAddr,sizeof(sockaddr_in));
- listen(listenerSocket,1);
- sockaddr_in remoteAddr;
- int nRemoteAddrLen = sizeof(sockaddr_in);
- SOCKET sessionSocket = accept(listenerSocket,(LPSOCKADDR)&remoteAddr,&nRemoteAddrLen);
- char buf[100];
- int receivedLen = recv(sessionSocket,buf,sizeof(buf),0);
- buf[receivedLen] = '\0';
- printf("Received from %s: %s\n",inet_ntoa(remoteAddr.sin_addr),buf);
- getchar();
- closesocket(sessionSocket);
- closesocket(listenerSocket);
- WSACleanup();
- return 0;
- }
复制代码 在两台电脑上分别运行,接收方就是接收不到,而使用127.0.0.1在本地试了倒能产生正确结果.
谢谢.
编译成的程序在附件里,以供方便
[ 本帖最后由 Lumj 于 2009-2-3 23:19 编辑 ] |
|