超级计算机囧囧囧's Archivers

From admin on 2011-03-16 11:01:24

winSocket编程简单入门例子


//Server.cpp
#include
#include
#include
#pragma comment(lib, "ws2_32.lib");
#define PORT 5000

void main()
{
int port = PORT;
WSADATA wsaData;
SOCKET sListen, sAccept;

int iLen;
int iSend;
char buf[] = "hello, how are you";
struct sockaddr_in serv,cliet;

if(WSAStartup(MAKEWORD(2,2),&wsaData) != 0)//启动命令
{
printf("Winsock load failed\n");
return;
}

sListen = socket(AF_INET, SOCK_STREAM, 0);//建立套接字
if (sListen == INVALID_SOCKET)
{
printf("socket failed:d%\n",WSAGetLastError());
return;
}

serv.sin_family = AF_INET;
serv.sin_port = htons(port);//设置端口

//serv.sin_addr.s_addr = htonl(INADDR_ANY);
serv.sin_addr.s_addr = inet_addr("127.0.0.1");

if (bind(sListen, (LPSOCKADDR)&serv, sizeof(serv)) == SOCKET_ERROR)//绑定
{
printf("bind()failed:%d\n", WSAGetLastError());
return;
}

if (listen(sListen, 5) == SOCKET_ERROR)
{
printf("listen()failed:d%\n", WSAGetLastError());
return;
}

iLen = sizeof (cliet);

while (1)
{
sAccept = accept(sListen, (sockaddr*)&cliet, &iLen);
if (sAccept == INVALID_SOCKET)
{
printf("accept()failed:d%\n", WSAGetLastError());
break;
}

//获得客户端的ip和端口
printf("获得客户端的ip和端口\n");
printf("accepted client IP:[%s],port:[%d]\n", inet_ntoa(cliet.sin_addr),ntohs(cliet.sin_port));

iSend = send(sAccept, buf, sizeof(buf), 0);//把buf中的内容发送出去
if (iSend == SOCKET_ERROR)
{
printf("send()failed:%d\n", WSAGetLastError());
break;
}
else if(iSend == 0)
break;
else
{
printf("客户端发送出的字节数\n");
printf("send() byte:%d\n", send);
}
closesocket(sAccept);
}
closesocket(sListen);
WSACleanup();
}

#########################################################

//Client.cpp
#include
#include

#pragma comment(lib, "ws2_32.lib");

#define PORT 5000
#define BUFFER 1024

int main(int argc,char* argv[])
{
WSADATA wsaData;
SOCKET client;

int port = PORT;

int iLen;
char buf[BUFFER];

struct sockaddr_in serv;
memset(buf, 0, sizeof(buf));

if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
{
printf("Winsock load failed\n");
return 0;
}

serv.sin_family = AF_INET;
serv.sin_port = htons(port);
//serv.sin_addr.s_addr = inet_addr(argv[1]);
serv.sin_addr.s_addr = inet_addr("127.0.0.1");

client = socket(AF_INET, SOCK_STREAM, 0);

if (client == INVALID_SOCKET)
{
printf("socket()failed:%d\n", WSAGetLastError());
return 0;
}

if (connect(client, (struct sockaddr*)&serv, sizeof(serv)) == INVALID_SOCKET)
{
//提示链接失败
printf("connect()failed:%d\n", WSAGetLastError());
return 0;
}
else//链接则接收数据
{
iLen = recv(client, buf, sizeof(buf), 0);
if (iLen == 0)
return 0;
else if (iLen == SOCKET_ERROR)
{
printf("recv()failed:%d\n", WSAGetLastError());
return 0;
}
printf("recv() data from server:%s\n", buf);
}

closesocket(client);
WSACleanup();

printf("press any key to continue");
while(1){};
}

查看完整版本: winSocket编程简单入门例子

Tags: winSocket


©超级计算机囧囧囧