本文主要是介绍windows10 sockect tcp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 在vs下添加ws2_32.lib库
右键【项目】-【属性】-【链接器】-【输入】-【附加依赖项】,进行编辑,添加 ws2_32.lib库,去掉从父级或项目默认设置继承的勾选,如下图所示:
这是因为inet_addr是一个老函数,而微软就是喜欢强迫别人用它的新函数。
【解决方案】
1. 用socket的新函数代替程序出现的所有老函数,此方法学习成本太高。
2. 在项目属性里设置,告诉编译器,我就用老函数,让她不要报错了。
所以推荐使用第二种解决方案,设置方法如下:
右键【项目】-【属性】-【配置属性】-【C/C++】-【常规】-【SDL检查】的值改为“否”,如下图:
Tcp服务端
#include<winsock2.h>
#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"WS2_32.lib")
int main()
{WSADATA data;WORD w = MAKEWORD(2, 0);char sztext[] = "欢迎你\r\n";::WSAStartup(w, &data);SOCKET s, s1;s = ::socket(AF_INET, SOCK_STREAM, 0);sockaddr_in addr, addr2;int n = sizeof(addr2);addr.sin_family = AF_INET;addr.sin_port = htons(75);addr.sin_addr.S_un.S_addr = INADDR_ANY;//通过将 `INADDR_ANY` 赋值给 `sin_addr.S_un.S_addr` 字段,//可以使套接字监听所有本地可用的IP地址。//这样一来,无论是IPv4还是IPv6地址,//都可以被套接字监听和处理连接请求::bind(s, (sockaddr*)&addr, sizeof(addr));::listen(s, 2);printf("服务器已经启动\r\n");while (true){s1 = ::accept(s, (sockaddr*)&addr2, &n);//这行代码表示接受一个传入连接请求,//并将客户端的地址信息保存到 `addr2` 中,//并且使用 `n` 来获取 `addr2` 结构体大小。if (s1 != NULL){printf("%s已经连接上\r\n", inet_ntoa(addr2.sin_addr));::send(s1, sztext, sizeof(sztext), 0);}::closesocket(s);::closesocket(s1);::WSACleanup();if (getchar()) //如果有输入则关闭程序{return 0; //正常结束程序}else{::Sleep(100);}}return 0;
}
Tcp客户端
#include<winsock2.h> //包含头文件
#include<stdio.h>
#include<windows.h>
#pragma comment(lib,"WS2_32.lib") //显式连接套接字库
int main() //主函数开始
{WSADATA data; //定义WSADATA结构体对象WORD w = MAKEWORD(2, 0); //定义版本号码::WSAStartup(w, &data); //初始化套接字库SOCKET s; //定义连接套接字和数据收发套接字句柄char sztext[10] = { 0 };s = ::socket(AF_INET, SOCK_STREAM, 0); //创建TCP套接字sockaddr_in addr; //定义套接字地址结构addr.sin_family = AF_INET; //初始化地址结构addr.sin_port = htons(75); //设置端口号75addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//设置目标网络地址printf("客户端已经启动\r\n"); //输出提示信息::connect(s, (sockaddr*)&addr, sizeof(addr));::recv(s, sztext, sizeof(sztext), 0);printf("%s\r\n", sztext);::closesocket(s); //关闭套接字句柄::WSACleanup(); //释放套接字库if (getchar()){return 0; //正常结束程序}else{::Sleep(100);}
}
这篇关于windows10 sockect tcp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!