Tcp编程基础
来源:互联网 发布:coc皮卡升级数据 编辑:程序博客网 时间:2024/05/17 09:26
服务端:
//1. 使用WSAStartup()初始化套接字库.相当于分配网络资源。 //可以想到有个对应释放资源的函数WSACleanup() WSADATA wsaData; WORD wVersionRequested = MAKEWORD(1, 1); //请求套接字 1.1 版本 int err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) return;
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return; }
//2. 创建套接字 SOCKET sockConn = socket(AF_INET, SOCK_STREAM, 0); //3. 向服务器端发起连接请求 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(sockConn, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));
//4.接受服务端数据 char recvBuf[100]; recv(sockConn,recvBuf,100,0); printf("%s\n",recvBuf);
//5.发送数据 send(sockConn, "李四: 网管你好,我是李四。", strlen("李四: 网管你好,我是李四。") + 1, 0); //6.关闭连接,本次客户请求完成 closesocket(sockConn);
//7.释放相关网络资源 WSACleanup();
//1. 使用WSAStartup()初始化套接字库.相当于分配网络资源。
//可以想到有个对应释放资源的函数WSACleanup()
WSADATA wsaData;
// WORD wVersionRequested = MAKEWORD(1, 1);
int err = WSAStartup(0x0101, &wsaData);
if (err != 0)
{
return;
}
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
WSACleanup();
return;
}
//2. 创建套接字。使用结束后,需要用closesocket()关闭套接字
SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
if (INVALID_SOCKET == sockSrv)
{
WSACleanup();
return;
}
//3. 绑定套接字到6000端口,注意网络字节序
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_port = htons(6000);
addrSrv.sin_family = AF_INET;
int x = sizeof(SOCKADDR);
int y = sizeof(SOCKADDR_IN);
err = bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
if (0 != err)
{
WSACleanup();
return;
}
//4. 监听客户端的请求
listen(sockSrv, SOMAXCONN);
//5. 循环处理每个监听到的客户端请求
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
// while (1)
{
//5.1 接受客户端请求,得到客户端信息于addrClient中
SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
//5.2 向该客户端发送数据
char sendBuf[100];
sprintf(sendBuf, "网管: %s, 欢迎光临605聊天室.", inet_ntoa(addrClient.sin_addr));
send(sockConn, sendBuf, strlen(sendBuf) + 1, 0);
//5.3 接受客户端数据
char recvBuf[100];
int nRecv = recv(sockConn, recvBuf, 100, 0);
if (nRecv > 0)
{
recvBuf[nRecv] = '\0';
printf("%s\n", recvBuf);
}
//5.4 关闭当前客户端连接
closesocket(sockConn);
//如果接受到"88"则退出监听. (不合理,需要改进)
//if (strcmp(recvBuf, "88") == 0) break;
}
//6.关闭服务端连接
closesocket(sockSrv);
//7.释放套接字库资源
WSACleanup();
客户端://1. 使用WSAStartup()初始化套接字库.相当于分配网络资源。 //可以想到有个对应释放资源的函数WSACleanup() WSADATA wsaData; WORD wVersionRequested = MAKEWORD(1, 1); //请求套接字 1.1 版本 int err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) return;
if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return; }
//2. 创建套接字 SOCKET sockConn = socket(AF_INET, SOCK_STREAM, 0); //3. 向服务器端发起连接请求 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(sockConn, (SOCKADDR *)&addrSrv, sizeof(SOCKADDR));
//4.接受服务端数据 char recvBuf[100]; recv(sockConn,recvBuf,100,0); printf("%s\n",recvBuf);
//5.发送数据 send(sockConn, "李四: 网管你好,我是李四。", strlen("李四: 网管你好,我是李四。") + 1, 0); //6.关闭连接,本次客户请求完成 closesocket(sockConn);
//7.释放相关网络资源 WSACleanup();
- C# TCP编程基础
- Tcp编程基础
- JAVA基础--TCP编程
- Python基础-TCP编程
- Python基础-TCP编程
- 网络编程TCP基础一
- Linux的TCP基础编程
- 网络编程基础--TCP/IP
- java基础----网络编程 tcp
- Python基础-TCP编程初识
- 网络基础以及基础编程-TCP
- java基础-网络编程之TCP编程
- 【tcp-ip学习总结】socket编程基础/网络编程基础
- 网络编程基础:使用TCP连接
- java基础--网络编程之TCP
- 网络编程之TCP/IP基础
- 网络编程TCP&UDP基础总结
- Java基础-网络编程(TCP练习)
- 托盘技术
- oracle添加和查看注释
- Oracle删除冗余垃圾文件
- 自定义消息步骤
- Toast的简单使用
- Tcp编程基础
- ibm 刀片服务器kvm使用
- 黑马程序员——复写Object类中equals()方法,用到Instanceof,向下转型,复写等等
- Oracle查询单条记录
- File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别
- [转载]用dumper打开运行程序的core dump功能
- ORA-00604 递归 SQL 级别 1 出现错误,ORA-01000 超出打开游标的最大数
- oracle中or查询慢,最好使用union all代替
- Get process's navigation path by using process name