您的位置:首页 > 理论基础 > 计算机网络

基于TCP协议的”hello world“

2015-12-19 17:39 477 查看
服务器端

#include "iostream"
#include "winsock2.h"
#pragma comment (lib, "ws2_32")

using namespace std;

int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);  //初始化ws2_32.dll动态库连接

SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

sockaddr_in sockaddr;
sockaddr.sin_family = PF_INET;
sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //IP地址,将IP转换为unsigned long型数值
sockaddr.sin_port = htons(827); //端口号,本地字节顺序转换为网络字节顺序

bind(s, (SOCKADDR*)&sockaddr, sizeof(SOCKADDR));

listen(s, 1);

SOCKADDR clientAddr;
int nSize = sizeof(SOCKADDR);
SOCKET clientSock;
//从处于监听状态的流套接字的客户端请求队列中取出第一个请求,并创建一个新的套接字与客户端进行通信
clientSock = accept(s, (SOCKADDR *)&clientAddr, &nSize);

send(clientSock, "hello client\n", strlen("hello client\n")+sizeof(char), 0);

closesocket(clientSock);
closesocket(s);

WSACleanup();  //释放ws2_32.dll
return 0;
}


客户端

#include "stdio.h"
#include "winsock2.h"
#pragma comment (lib, "ws2_32")

int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2, 2), &wsaData);

SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

sockaddr_in sockAddr;  //对服务器端的描述
sockAddr.sin_family = PF_INET;
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockAddr.sin_port = htons(827);

connect(s, (SOCKADDR *)&sockAddr, sizeof(SOCKADDR));

char szBuffer[MAXBYTE] = {0};

recv(s, szBuffer, MAXBYTE, 0);

printf("szBuffer = %s\n", szBuffer);

closesocket(s);

WSACleanup();
return 0;
}


服务器端



客户端

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: