读书人

socket新人,求解,该怎么处理

发布时间: 2012-04-17 15:06:33 作者: rapoo

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");

读书人网 >C++

热点推荐