在vs2013的环境下,服务器代码如下:
#include <stdio.h>
#include "stdafx.h"
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define buffer_rev 1024
#define buffer_send 1024
int main()
{
char buffer1[buffer_rev], buffer2[buffer_send];
//当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库
//然后绑定找到的Socket库到该应用程序中
WORD sockversion; //winsock规范的最高版本
WSADATA wsadata; // 用来返回winsock API实现的细节信息
sockversion = MAKEWORD(2, 2); //生成版本号2.2
WSAStartup(sockversion,&wsadata);
//创建服务器端监听套接字
SOCKET slisten = socket(AF_INET, SOCK_STREAM, 0); //slisten是创建的监听套接字描述符
//创建服务器端地址
struct sockaddr_in addrser;
addrser.sin_family = AF_INET; // TCP/IP协议族
addrser.sin_addr.S_un.S_addr = inet_addr("0.0.0.0"); // socket对应的IP地址
addrser.sin_port = htons(1234); // socket对应的端口
//绑定套接字并监听
bind(slisten, (sockaddr*)&addrser,sizeof(addrser));
listen(slisten, 5);
//客户端地址
struct sockaddr_in addrclient;
int lenclient = sizeof(addrclient);
while (1) //持续监听
{
SOCKET sockAcpt = accept(slisten,(sockaddr*)&addrclient, &lenclient); //创建连接套接字
recv(sockAcpt, buffer1, sizeof(buffer1), 0);
printf("接收到的数据是: %s", buffer1);
send(sockAcpt, "hello world", strlen("hello world") + 1, 0);
closesocket(sockAcpt); //关闭连接套接字
}
closesocket(slisten); //关闭监听套接字
WSACleanup(); //解除与Socket库的绑定并且释放Socket库所占用的系统资源
return 0;
}
服务器端代码:
// client_myself.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
#define buffer_send 1024
#define buffer_rev 1024
char buffer1[buffer_send],buffer2[buffer_rev];
int main()
{
WORD sockversion;
WSADATA wsadata;
sockversion = MAKEWORD(2, 2);
WSAStartup(sockversion, &wsadata);
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);//绑定客户端套接字
SOCKADDR_IN addrser;
addrser.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrser.sin_family = AF_INET;
addrser.sin_port = htons(1234);
connect(sockClient, (sockaddr*)&addrser, sizeof(addrser));//请求连接
send(sockClient, "hello world",strlen("hello world") + 1, 0);
recv(sockClient, buffer2, sizeof(buffer2), 0);
printf("接收到的数据是: %s", buffer2);
closesocket(sockClient);
WSACleanup();
return 0;
}