`
Elvis_Wu
  • 浏览: 51416 次
  • 性别: 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;
}
分享到:
评论

相关推荐

    winSocket编程之TCP聊天小工具

    本文将深入探讨基于WinSocket的TCP聊天小工具的实现,包括客户端与服务器的交互、好友列表的实时更新以及字符串处理等关键技术。 首先,TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它...

    WinSocket_TCP.rar_tcp vc_winsocket TCP

    在IT行业中,网络编程是至关重要的领域,而...总的来说,“WinSocket_TCP.rar”提供的示例是学习和掌握TCP网络编程的一个有效途径,它可以帮助开发者更好地理解和运用WinSocket API,为构建基于TCP的应用打下坚实基础。

    IPV6 TCP的WinSocket实现。

    下面我们将深入探讨如何使用WinSocket API在IPv6环境下实现TCP服务器。 首先,我们需要了解WinSocket的基本概念。WinSocket是Microsoft Windows操作系统中对Berkeley Sockets接口的实现,它为开发者提供了一种标准...

    网络编程作业(winsocket实现聊天程序)

    3. **TCP/IP协议栈**:聊天程序通常基于TCP协议,因为它提供可靠的、面向连接的数据传输。TCP协议确保数据的顺序传输和错误检测,通过三次握手建立连接,四次挥手关闭连接。 4. **网络地址和端口号**:每个通信的套...

    visual c++调用WinSocket开发TCP通信程序,Client和Server通讯程序.zip

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

    TCP-Socket-Example.zip_TCP winsocket_tcp

    本文将深入探讨TCP-Socket编程,特别是基于Windows平台的WinSocket API,以及如何使用TCP模式进行实际应用。 TCP是一种面向连接的、可靠的传输协议,它通过三次握手建立连接,并使用确认机制确保数据的正确传输。...

    PB9+TCP/ip通讯服务利用winSocket的例子(简单,测试通过)

    标题 "PB9+TCP/ip通讯服务利用winSocket的例子...了解这些基础知识对于理解和实现基于PB9和winSocket的TCP/IP通信至关重要。通过这个示例项目,开发者不仅可以学习到具体的编程技巧,还能深入理解网络通信的基本原理。

    TCP通信-使用winsocket

    Winsock是Windows操作系统中的一个API,用于实现TCP/IP协议栈。它为开发者提供了在Windows上编写网络应用程序的能力,支持多种网络协议,如TCP、UDP等。在"TCP通信-使用winsocket"的例子中,开发者将使用Winsock库...

    vc实现的 winsocket实现的编程实例

    在实际的编程实例中,`第16章 WinSocket编程`可能包含了以上这些步骤的代码实现,包括服务器端的启动、监听、接受连接,以及客户端的连接、发送数据和接收数据。通过阅读和分析这个实例,你可以更好地理解和掌握...

    winsocket编程c++实现

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

    基于winsocket的文件传输源程序

    总的来说,这个基于Winsocket的文件传输源程序结合了网络编程和图形用户界面设计,实现了高效、可靠的文件交换功能。开发者可以通过学习和理解这个项目,提升在网络通信和MFC应用开发方面的技能。

    用C编写的winsocket程序

    TCP是基于连接的,它确保数据的有序和无损传输。在TCP连接建立之前,客户端和服务器需要进行三次握手,确保双方都可以通信。一旦连接建立,客户端就可以向服务器发送数据包,并且服务器可以回应。TCP还提供了流量...

    基于TCP的文件传送程序(含源码)

    2. **Winsocket**:这是实现TCP连接和数据传输的接口。 3. **vc++6.0**:这是一个较旧但仍然被广泛使用的C++集成开发环境,用于编译和调试程序。 4. **文件传输**:程序的核心功能,涉及到文件I/O操作、网络流的...

    winsocket编程实现简单 server端和client端

    通过Winsocket,开发者可以创建能够发送和接收数据的网络应用程序,无论是基于TCP(传输控制协议)还是UDP(用户数据报协议)。 在描述中提到的程序包含两个主要部分:Server端和Client端。Server端通常负责监听...

    C#上位机基础学习-基于SOCKET实现与PLC服务器的TCP通信(一).docx

    在本文档中,我们探讨了如何使用C#上位机通过SOCKET实现与PLC服务器的TCP通信。首先,我们了解了所需的测试环境,包括TIA PORTAL V15.1S7-PLCSIM ADVANCED V3.0用于PLC仿真和Visual Studio 2019用于编写C#应用程序。...

    基于tcp的聊天室C++代码

    【标题】"基于TCP的聊天室C++代码"是一份实现简单网络聊天功能的编程项目,主要使用C++语言,并基于TCP协议进行通信。TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,...

    基于winsocket的聊天室

    【标题】:“基于Winsock的聊天室” 在计算机科学领域,网络编程是连接不同设备进行通信的核心技术之一。本文将详细讲解如何使用Windows Socket(通常称为Winsock)库来创建一个简单的聊天室,这对于网络编程初学者...

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

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

    WinSocket 网络高级实现教程

    在IT行业中,网络编程是构建分布式系统和互联网应用的基础,而WinSocket是Windows平台上实现TCP/IP网络通信的主要接口。本教程将深入探讨WinSocket的高级实现,特别关注如何利用WinSocket来创建一个网络聊天室。我们...

Global site tag (gtag.js) - Google Analytics