服务器端:
#include <stdio.h>
#include <Winsock2.h>
int main() {
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0) {
return;
}
if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
WSACleanup();
return;
}
// 创建用于监听的套接字
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);
// 绑定套接字
bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
// 将套接字设为监听模式,准备接收客户请求
listen(sockSrv, 5);
SOCKADDR_IN addrClient;
int len = sizeof(SOCKADDR);
while(1) {
// 等待客户请求到来
SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);
char sendBuf[100];
// 将字符串写入sendBuf中
sprintf(sendBuf, "Wellcome %s to http://www.sunxin.org", inet_ntoa(addrClient.sin_addr));
// 发送数据
send(sockConn, sendBuf, strlen(sendBuf)+1, 0);
char recvBuf[100];
// 接受数据
recv(sockConn, recvBuf, 100, 0);
// 打印接收的数据
printf("%s\n", recvBuf);
// 关闭套接字
closesocket(sockConn);
}
}
客户端:#include <stdio.h>
#include <Winsock2.h>
int main() {
// 加载套接字库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0) {
return -1;
}
if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
WSACleanup();
return -2;
}
// 创建套接字
SOCKET sockClient = 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(sockClient, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
// 接收数据
char recvBuf[100];
recv(sockClient, recvBuf, 100, 0);
printf("%s\n", recvBuf);
// 发出数据
send(sockClient, "This is lisi", strlen("This is lisi")+1, 0);
// 关闭套接字
closesocket(sockClient);
WSACleanup();
getchar();
return 0;
}
分享到:
相关推荐
Visual C++作为一个强大的开发环境,可以用来实现基于WinSocket的TCP通信程序。本教程将深入探讨如何使用Visual C++调用WinSocket API来创建TCP客户端和服务器的通信程序。 首先,我们来看`Client和Server通讯程序....
在基于对话框的应用程序中,我们将Winsocket功能集成到对话框类中。可以创建一个成员变量来存储socket句柄,并在对话框初始化时设置和启动Winsocket服务。接下来,我们需要绑定socket到特定的IP地址和端口,使用`...
总的来说,基于TCP/IP协议的多线程聊天程序涉及网络通信基础、多线程编程技巧、WINSOCKET接口使用,以及TCP连接管理和数据交换策略。通过这样的程序设计,可以构建出稳定、高效的网络聊天环境。
总的来说,通过WinSocket进行局域网聊天程序的开发,开发者需要理解网络协议的基本概念,如TCP和UDP的工作原理,以及如何使用WinSocket API来处理网络通信中的各种事件。同时,设计合理的广播和监听机制对于实现类似...
本项目“C++ Winsocket程序”专注于使用C++和Windows API中的Winsock库来创建一个基于TCP协议的模拟QQ聊天平台。以下是关于这个项目的一些关键知识点和详细说明: 1. **TCP协议**:传输控制协议(TCP)是一种面向...
**WinSocket**是Microsoft Windows提供的网络编程接口,它提供了基于TCP/IP协议的接口实现方法。通过TCP/IP,我们可以与指定IP地址的主机建立连接,并利用建立的连接进行双向的数据交换。TCP/IP协议提供了两种通信...
Winsock,是Windows操作系统中的一个API,用于实现TCP/IP协议栈,而MFC是微软提供的C++类库,用于简化Windows应用程序的开发,包括GUI界面和多线程支持。 首先,我们要理解Winsock的基础。Winsock提供了一系列函数...
Winsock库允许开发者创建基于TCP/IP协议的网络应用,包括我们的网络聊天程序。我们将使用Winsock进行套接字编程,建立客户端和服务器之间的连接,发送和接收数据。 在创建聊天程序时,我们需要以下几个主要组件: ...
◆ 89.htm 用VB构建Internet的应用[微软提供] ◆ 90.htm 用VB开发标准CGI程序 ◆ 91.htm 用VB实现客户——服务器(TCP IP)编程实例 ◆ 92.htm 用VB实现客户服务器(TCP、IP)编程实例 ...