栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++的网络编程TCP

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++的网络编程TCP

c++的网络编程TCP
服务器端

// c++网络编程.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include 
#include
//#include
//#include

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

int main()
{
    //加载套接字库
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(1, 1); //初始化版本号
    //初始化套接字串
    err = WSAStartup(wVersionRequested, &wsaData);//初始化
    if (err != 0) {
        return err;
    }

    if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
    {
        WSACleanup(); //应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
        return -1;
    }
    //新建套接字
    SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);

    SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrSrv.sin_family = AF_INET;
    addrSrv.sin_port = htons(6000);

    //绑定套接字到本地ip地址,端口号6000
    bind(sockSrv, (SOCKADDR *)&addrSrv,sizeof(SOCKADDR));

    //开始监听
    listen(sockSrv, 5);

    SOCKADDR_IN addrCli;
    int len = sizeof(SOCKADDR);

    while (true) {
        //接受客户连接
        SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrCli, &len);//accept的第一参数套接字,第二个参数是地址,第三个参数是套接字的长度
        char sendBuf[100];
        sprintf_s(sendBuf, 100, "Welcome %s to qiniu", inet_ntoa(addrCli.sin_addr));
        //发送数据
        send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);//接受数据
        char recvBuf[100];
        //接受数据
        recv(sockConn, recvBuf, 100, 0);
        //打印接受的数据
        std::cout << recvBuf << std::endl;
        closesocket(sockConn);
    }

    closesocket(sockSrv);
    WSACleanup();

  

    system("pause");
    return 0;
}



客户端

#include
#include

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

int main() {
	char sendBuf[] = "hello world";
	WORD wVersion;
	WSADATA wsaData;
	int err;

	wVersion = MAKEWORD(1, 1);
	err = WSAStartup(wVersion, &wsaData);
	if (err != 0) {
		return err;
	}

	if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
		WSACleanup();
		return -1;
	}

	//创建套接字
	SOCKET sockCli = socket(AF_INET, SOCK_STREAM, 0);

	SOCKADDR_IN addrSrv;
	addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(6000);

	//向服务器发起连接请求
	connect(sockCli, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//第一参数套接字,第二参数服务器地址,第三参数地址结构的长度

	//接受数据
	char recvBuf[100];
	recv(sockCli, recvBuf, 100, 0); //第一参数套接字,第二参数缓冲,第三参数大小数目,第四参数为0
	std::cout << recvBuf << std::endl;

	//发送数据
	send(sockCli, sendBuf, strlen(sendBuf) + 1, 0);//

	//关闭套接字
	closesocket(sockCli);
	WSACleanup();

	//暂停
	system("pause");
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号