服务器:
#include "stdafx.h"
#include <iostream>
#include "winsock2.h"
#pragma comment (lib, "ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET sockfd,sockfd1;
if(WSAStartup(MAKEWORD(2,2),&wsaData)<0)
{
printf("WSAStartup failed\n");
return 1;
}
else
{
printf("WSAStartup successed!\n");
}
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==SOCKET_ERROR)
{
printf("套接口创建失败!");
WSACleanup();
return 1;
}
else
{
printf("a new socket has been created!\n");
printf("the socket id is %d\n",sockfd);
}
struct sockaddr_in addr;
int addr_len=sizeof(struct sockaddr_in);
addr.sin_family=AF_INET;
addr.sin_port=htons(8888);
addr.sin_addr.s_addr=INADDR_ANY;
if(bind(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0)
{
printf("bind error!");
return 1;
}
else
{
printf("bind ok!");
}
listen(sockfd,5);
/*SOCKET TempSock=SOCKET_ERROR;
while(TempSock==SOCKET_ERROR)
{
std::cout<<"服务器:正在等待来自客户机的连接...\r\n";
TempSock=accept(sockfd,NULL,NULL);
}
sockfd=TempSock;
std::cout<<"服务器:有客户机到达!\r\n\r\n";*/
int len=sizeof(addr);
sockfd1=accept(sockfd,(SOCKADDR*)&addr,&len);
char *szMessage="服务器说:有朋自远方来,不亦悦乎。\r\n";
send(sockfd1,szMessage,strlen(szMessage),0);
shutdown(sockfd,SD_SEND);
closesocket(sockfd);
WSACleanup();
system("PAUSE");
return 0;
}
客户机:
#include <iostream>
#include "winsock2.h"
#pragma comment (lib, "ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsaData;
SOCKET sockfd;
if(WSAStartup(MAKEWORD(2,2),&wsaData)<0)
{
printf("WSAStartup failed\n");
return 1;
}
else printf("WSAStartup successed!\n");
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==SOCKET_ERROR)
{
printf("套接口创建失败!");
WSACleanup();
return 1;
}
else
{
printf("a new socket has been created!\n");
printf("the socket id is %d\n",sockfd);
}
struct sockaddr_in addr;
int addr_len=sizeof(struct sockaddr_in);
addr.sin_family=AF_INET;
addr.sin_port=htons(8888);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
printf("the ip address of the server is: %s\n",inet_ntoa(addr.sin_addr));
if(connect(sockfd,(SOCKADDR *)&addr, sizeof(addr))<0)
{
printf("connect error!\n");
return 1;
}
else
{
printf("connected ok!\n");
}
char buffer[1024];
memset(buffer, 0,1023);
int inDataLength=recv(sockfd, buffer,1024,0);
std::cout<<buffer;
shutdown(sockfd,SD_SEND);
closesocket(sockfd);
WSACleanup();
return 0;
}