`
Elvis_Wu
  • 浏览: 52260 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

WinSocket实现基于TCP的对话

    博客分类:
  • C
阅读更多
服务器端:

#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通信程序,Client和Server通讯程序.zip

    Visual C++作为一个强大的开发环境,可以用来实现基于WinSocket的TCP通信程序。本教程将深入探讨如何使用Visual C++调用WinSocket API来创建TCP客户端和服务器的通信程序。 首先,我们来看`Client和Server通讯程序....

    winsocket编程c++实现

    在基于对话框的应用程序中,我们将Winsocket功能集成到对话框类中。可以创建一个成员变量来存储socket句柄,并在对话框初始化时设置和启动Winsocket服务。接下来,我们需要绑定socket到特定的IP地址和端口,使用`...

    基于TCP/IP协议的多线程聊天程序

    总的来说,基于TCP/IP协议的多线程聊天程序涉及网络通信基础、多线程编程技巧、WINSOCKET接口使用,以及TCP连接管理和数据交换策略。通过这样的程序设计,可以构建出稳定、高效的网络聊天环境。

    利用WinSocket写局域网聊天程序文件.pdf

    总的来说,通过WinSocket进行局域网聊天程序的开发,开发者需要理解网络协议的基本概念,如TCP和UDP的工作原理,以及如何使用WinSocket API来处理网络通信中的各种事件。同时,设计合理的广播和监听机制对于实现类似...

    C++ winsocket程序

    本项目“C++ Winsocket程序”专注于使用C++和Windows API中的Winsock库来创建一个基于TCP协议的模拟QQ聊天平台。以下是关于这个项目的一些关键知识点和详细说明: 1. **TCP协议**:传输控制协议(TCP)是一种面向...

    利用MFC的CSOCKET类实现网络聊天程序

    **WinSocket**是Microsoft Windows提供的网络编程接口,它提供了基于TCP/IP协议的接口实现方法。通过TCP/IP,我们可以与指定IP地址的主机建立连接,并利用建立的连接进行双向的数据交换。TCP/IP协议提供了两种通信...

    MFC基于多线程的聊天程序用了winsock套接字

    Winsock,是Windows操作系统中的一个API,用于实现TCP/IP协议栈,而MFC是微软提供的C++类库,用于简化Windows应用程序的开发,包括GUI界面和多线程支持。 首先,我们要理解Winsock的基础。Winsock提供了一系列函数...

    简单的网络聊天程序

    Winsock库允许开发者创建基于TCP/IP协议的网络应用,包括我们的网络聊天程序。我们将使用Winsock进行套接字编程,建立客户端和服务器之间的连接,发送和接收数据。 在创建聊天程序时,我们需要以下几个主要组件: ...

    VB网络编程实例

    ◆ 89.htm 用VB构建Internet的应用[微软提供] ◆ 90.htm 用VB开发标准CGI程序 ◆ 91.htm 用VB实现客户——服务器(TCP IP)编程实例 ◆ 92.htm 用VB实现客户服务器(TCP、IP)编程实例 ...

Global site tag (gtag.js) - Google Analytics