socket的问题,希望大神帮忙看看

Aaron_sal Aaron_sal 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
摸索一天了,都不知道哪出问题了!以下是程序:

window下VS2010写的客户端程序:
#include <WINSOCK2.H>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
#pragma comment(lib, "ws2_32.lib ")


//0 加载套接字库(WSAStartup())
bool LoadWSA();

//1 创建套接字(socket());
bool CreateSocket(SOCKET& sock,int type=SOCK_STREAM);

//2 向服务器发出连接请求(connect());
bool ConnectToServer(SOCKET& sock,short port ,const char* strIp);

//3 和服务器端进行通信(send()/recv())
bool Communicate(SOCKET& sock);

//4
bool CloseSocket(SOCKET& sock);

//5 关闭加载的套接字库(WSACleanup())
void CloseWSA();

void ExitWithErrorMessage(const string& errMsg);


void main()
{
cout<<"Start Client.\n";
if(!LoadWSA() )
ExitWithErrorMessage("LoadWSA failed.");
cout<<"LoadWSA Success.\n";

SOCKET clietSock;

if(!CreateSocket(clietSock) )
ExitWithErrorMessage("create server socket failed.");
cout<<"CreateSocket Success.\n";

if(!ConnectToServer(clietSock,5656,"172.19.28.204") )
ExitWithErrorMessage("ConnectToServer failed.");
cout<<"ConnectToServer Success.\n";

if(!Communicate(clietSock) )
ExitWithErrorMessage("Communicate failed.");
cout<<"Communicate Success.\n";

if(! CloseSocket(clietSock) )
ExitWithErrorMessage("CloseSocket failed.");
cout<<"CloseSocket Success.\n";

CloseWSA();
cout<<"CloseWSA Success.\n";


}

bool LoadWSA()
{
WSAData wsaData;

if( 0 == WSAStartup(MAKEWORD(2,2),&wsaData) )
{
return true;
}

return false;
}

void CloseWSA()
{
WSACleanup();
}

bool CreateSocket(SOCKET& sock,int type/* =SOCK_STREAM */)
{
sock=socket(AF_INET,type,0);

if(INVALID_SOCKET == sock)
{
return false;
}

return true;
}

bool ConnectToServer(SOCKET& sock,short port ,const char* strIp)
{
SOCKADDR_IN address;
address.sin_family=AF_INET;
address.sin_addr.s_addr=inet_addr(strIp);
address.sin_port=htons(port);
memset(address.sin_zero,0,sizeof(address.sin_zero));

if(SOCKET_ERROR == connect(sock,(const struct sockaddr*)&address,sizeof(struct sockaddr)) ) //客户端发送服务请求
{
return false;
}

return true;
}

bool Communicate(SOCKET& sock)
{
bool flag=true;
int errCode;
char buffer[100]={0};

while(true)
{
memset(buffer,0,100);
cin.getline(buffer,100);
errCode=send(sock,buffer,strlen(buffer),0);

if(errCode==SOCKET_ERROR)
{
cout<<"send message error.\n";
flag=false;
break;
}

memset(buffer,0,100);
recv(sock,buffer,100,0);
cout<<buffer<<endl;
}

return flag;
}
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
Aaron_sal
Linux/Unix社区 23,224 成员 74,535 内容