socket新人,求解
- C/C++ code
#include <iostream>#include <winsock2.h>using namespace std; /****求完整的一个程序****/int main(){ WSADATA wsaData; int ret; if((ret = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0) { cout << "Error_Error_" << ret << endl; return 0; } if(WSACleanup() == SOCKET_ERROR) { cout << "Error_Error_" << WSAGetLastError() << endl; } SOCKADDR_IN sockAddr; sockAddr.sin_family = AF_INET; INT port = 5055; sockAddr.sin_port = htons(port); //这个inet_addr不能把char*转换成unsigned long类型么???? sockAddr.sin_addr = inet_addr("127.0.0.1");}/**************************************************错误**************************************************//*error C2679: 二进制“=”: 没有找到接受“unsigned long”类型的右操作数的运算符(或没有可接受的转换)**//*microsoft sdks\windows\v6.0a\include\inaddr.h(34): 可能是in_addr &in_addr::operator =(const in_addr &)/
[解决办法]
- C/C++ code
#pragma comment(lib,"WSOCK32.lib") #pragma comment(lib,"ws2_32.lib") #include"stdio.h"#include <Winsock2.h>void main(){ WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if(iResult != NO_ERROR) { printf("Error at WSAStartup()\n"); return; } SOCKET socket1; struct sockaddr_in local; struct sockaddr_in from; int fromlen =sizeof(from); local.sin_family=AF_INET; local.sin_port=htons(1000); ///监听端口 local.sin_addr.s_addr=INADDR_ANY; ///本机 socket1=socket(AF_INET,SOCK_DGRAM,0); bind(socket1,(struct sockaddr*)&local,sizeof local); while (1) { char buffer[1024]="/0"; printf("waiting for message from others-------------/n"); if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR) { printf("Received datagram from %s--%s/n",inet_ntoa(from.sin_addr),buffer); ////给cilent发信息 sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&from,fromlen); } Sleep(500); } closesocket(socket1); WSACleanup();}#pragma comment(lib,"WSOCK32.lib") #pragma comment(lib,"ws2_32.lib") #include"stdio.h"#include <Winsock2.h>void main(){ WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);//WinSock的版本 if(iResult != NO_ERROR) { printf("Error at WSAStartup()\n"); return; } SOCKET socket1; struct sockaddr_in server; int len =sizeof(server); server.sin_family=AF_INET; server.sin_port=htons(1000); ///server的监听端口 server.sin_addr.s_addr=inet_addr("192.168.0.118"); ///server的地址 socket1=socket(AF_INET,SOCK_DGRAM,0);//UDP协议 while (1) { char buffer[1024] = {0}; printf("input message/n"); //scanf("%s",buffer); if (strcmp(buffer,"bye")==0) break; if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*)&server,len)!=SOCKET_ERROR) { printf("++++++sendto success\n"); } else { printf("------sendto failed\n"); } Sleep(500); } closesocket(socket1); WSACleanup();}
[解决办法]
sin_addr.s_addr = inet_addr("127.0.0.1");