`
hereson
  • 浏览: 1454589 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

C++ socket程序

阅读更多
C++ socket程序
下面是一个C++调用windows API实现有通信程序,您可以据此进行修改,封装成类.
// *******************************************************************
// client.cpp : Defines the entry point for the console application.
// *******************************************************************
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#define PORT_SERVER 6656

int main(int argc, char* argv[])
{
std::cout << "Start up tcp client." << std::endl;

WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 0);
if (0 != WSAStartup(sockVersion, &wsaData))
{
   std::cout << "Failed to retrive socket version."
    << std::endl;
   return 0;
}

SOCKET sock_client;
sock_client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sock_client)
{
   std::cout << "Invalid socket." << std::endl;
   WSACleanup();
   return 0;
}
sockaddr_in addr_sev;
addr_sev.sin_family = AF_INET;
addr_sev.sin_port = htons(PORT_SERVER);
addr_sev.sin_addr.s_addr = inet_addr("127.0.0.1");
if (SOCKET_ERROR == connect(sock_client, (sockaddr *)&addr_sev, sizeof(addr_sev)))
{
   std::cout << "Failed to connect." << std::endl;
   WSACleanup();
   return 0;
}
char buf[512];
int recv_size = 0;
recv_size = recv(sock_client, buf, 512, 0);
if (512 > recv_size)
{
   buf[recv_size] = '\0';
   std::cout << "receive data is :" << buf << std::endl;
   memset(buf, 0, sizeof(buf));
}
else
{
   std::cout << "receive data is overflow" << std::endl;
}
closesocket(sock_client);
WSACleanup();
system("PAUSE");
return 0;
}
// *******************************************************************
// server.cpp : Defines the entry point for the console application.
// *******************************************************************
#include "stdafx.h"
#include <winsock2.h>
#include <iostream>
#define PORT_SERVER 6656
#define NUM_CLIENTS 10
int main(int argc, char* argv[])
{
std::cout << "Start up tcp server." << std::endl;

WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 0);
if (0 != WSAStartup(sockVersion, &wsaData))
{
   std::cout << "Failed to retrive socket version."
         << std::endl;
   return 0;
}
SOCKET sock_sev;
sock_sev = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == sock_sev)
{
   std::cout << "Invalid socket." << std::endl;
   WSACleanup();
   return 0;
}
sockaddr_in addr_sev;
addr_sev.sin_family = AF_INET;
addr_sev.sin_port = htons(PORT_SERVER);
addr_sev.sin_addr.s_addr = INADDR_ANY;
if (SOCKET_ERROR == bind(sock_sev, (sockaddr *)&addr_sev, sizeof(addr_sev)))
{
   std::cout << "Failed to bind." << std::endl;
   WSACleanup();
   return 0;
}
if (SOCKET_ERROR == listen(sock_sev, NUM_CLIENTS))
{
   std::cout << "Failed to listen." << std::endl;
   WSACleanup();
   return 0;
}
// 多路复用,暂时还未实现.后期会对此给出示例.
//fd_set reads;
//fd_set writes;
//fd_set accepts;
//FD_ZERO(&reads);
//FD_ZERO(&writes);
//FD_ZERO(&accepts);
//SOCKET sock_client;
sockaddr_in addr_client;
int nAddrLen = sizeof(addr_client);
while (true)
{
   char tmp[512];
   sock_client = accept(sock_sev, (sockaddr *)&addr_client, &nAddrLen);
  
   if (INVALID_SOCKET == sock_client)
   {
    std::cout << "Failed to accept." << std::endl;
    continue;
   }
   sprintf(tmp, "Your IP is %s\n", inet_ntoa(addr_client.sin_addr));
   send(sock_client, tmp, strlen(tmp), 0);
   std::cout << "Connection from " << inet_ntoa(addr_client.sin_addr)
         << std::endl;
   closesocket(sock_client);
}

return 0;
}
注:本程序使用的是VC6 IDE,编译时请在link中加入对ws2_32.lib库的引用.
分享到:
评论

相关推荐

    Linux下使用C++进行Socket编程

    在此基础上,利用C++对一些重复的、固定的操作进行封装,可以形成更为高效和可靠的C++ Socket程序。封装类可以包含初始化连接、数据发送和接收、异常处理等方法,这样在编写具体的应用程序时,开发者只需要关注业务...

    C++ Socket互发消息程序示例.

    关于压缩包中的www.NewXing.com文件,它可能包含了一个完整的C++ Socket程序示例。解压并查看源代码可以帮助你更深入地理解上述步骤如何在实际项目中实现。记住,学习Socket编程不仅要求理论知识,还需要动手实践,...

    c++ socket通信库

    - **跨平台**: 只要遵循标准的Socket API,C++编写的Socket程序可以在多种操作系统上运行,如Windows、Linux、macOS等。 - **语言兼容性**: 描述中提到C++编写的库也可以被C#等其他语言调用,这意味着它可能提供了...

    C++ socket

    通过这些步骤和技巧,开发者可以构建起C++ Socket程序,实现网络上的数据传输。在实际开发中,可能还会涉及到更复杂的网络协议和架构设计,如HTTP、HTTPS、FTP等。理解并熟练掌握C++ Socket编程,是网络编程领域的...

    C++ socket 阻塞与非阻塞

    在C++中,Socket编程是网络通信的基础,用于创建客户端和服务器端的连接。本话题主要探讨的是在C++ Socket编程中的阻塞模式与非阻塞模式,以及它们在多线程环境下的应用和资源管理。 一、阻塞与非阻塞模式 1. **...

    c++Socket通信框架

    C++ Socket通信框架是网络编程中的重要组成部分,它允许程序通过网络进行数据交换。在Windows平台上,使用C++实现Socket通信通常涉及到Windows Socket API(也称为Winsock)。本框架“HP-Socket”专为Windows环境...

    C++Socket编程详解

    C++ Socket 编程详解 C++ Socket 编程是指使用 C++ 语言和_socket 编程技术来实现网络应用的开发。Socket 编程是网络编程中的一种重要技术,它允许不同的计算机之间通过网络进行通信。 OSI 七层网络模型 OSI 七层...

    c++ socket Library Documentation

    C++ Socket库提供了一种在C++中实现网络编程的方法,允许程序通过Internet或本地网络发送和接收数据。Socket是操作系统提供的接口,它允许应用程序访问网络协议,如TCP/IP。本文档将深入探讨C++ Socket库的关键概念...

    c++的socket客户端和服务器程序

    编译C++ Socket程序时,通常需要链接socket和nsl库。例如,编译命令可能是`g++ -o server server.cpp -lsocket -lnsl`和`g++ -o client client.cpp -lsocket -lnsl`。 压缩包中的"kehuduan"和"fuwuqi"可能是服务器...

    一个简单的vs c++ socket通讯程序

    建立客户端和客户端c++空项目,分别添加socketClient.cpp和sockServer.cpp, 根据注释配置,编译生成后就可以执行。客户端程序在visual studio 2015和2013上编译通过,服务端程序在visual studio 2015和2008上编译...

    C++socket编程向固定网卡发送数据

    ### C++ Socket编程:向固定网卡发送数据 #### 知识点概览 本文将基于给定的代码示例,深入探讨C++中的Socket编程技术,并解释如何使用Socket进行客户端编程来向指定的IP地址发送数据。我们将涵盖以下几个方面: - ...

    QT中使用C++ socket通信 客户端与服务端的代码实例

    在QT框架中,C++ Socket通信是实现网络数据交换的基础,它允许客户端和服务端通过网络进行数据传输。本文将深入探讨如何在QT中使用C++编写客户端和服务端的socket通信代码,以及涉及到的关键操作。 首先,我们需要...

    C++ SOCKET编程介绍

    C++ SOCKET编程是一种在C++中实现网络通信的技术,它基于Berkeley Sockets接口,允许开发者创建客户端和服务器应用程序,实现跨网络的数据传输。SOCKET是操作系统提供的一个接口,使得程序能够通过网络发送和接收...

    c++ socket 源代码

    C++ Socket编程是网络编程中的基础,用于在不同的设备或程序之间建立通信通道。源代码通常是程序员用C++编写的程序或库,用于实现特定功能,例如在这个案例中,是Socket通信。以下是对C++ Socket源代码的一些详细...

    c++ socket tcp demo

    在IT领域,网络编程是不可或缺的一部分,而C++ Socket编程是实现TCP通信的重要技术。本示例中的"TCP Demo"提供了C++实现TCP客户端和服务器的简单应用,通过socketserver.cpp和socketclient.cpp两个文件来展示。下面...

    一个基于C++实现的类似VS2005的开发框架控件源代码及例子程序

    该资源是一个基于C++编程语言实现的开发框架控件库,其设计灵感来源于Visual Studio 2005的界面和功能。这个框架的核心目标是提供一套高效、灵活且功能丰富的用户界面组件,使得开发者能够创建出类似专业集成开发...

    C++socket编程实例

    在IT领域,网络通信是不可或缺的一部分,而C++作为强大的编程语言,提供了丰富的库支持进行网络...压缩包中的"**C++Socket编程**"文件可能包含了详细的代码示例和步骤解析,对于学习和理解C++ socket编程非常有帮助。

    C++ socket绝密编程资料.rar

    C++ Socket编程是一种在C++中实现网络通信的技术,它基于Berkeley Sockets API,用于构建客户端和服务器应用程序。在本资料中,我们将深入探讨C++ Socket编程的基础、原理以及高级应用,包括如何使用Ice进行分布式...

    使用C/C++实现Socket聊天程序

    本文将深入探讨如何使用C/C++语言来创建一个简单的Socket聊天程序。这个程序适用于局域网内的通信,为初学者提供了理解Socket编程原理及实践操作的平台。 首先,让我们了解什么是Socket。Socket在计算机网络中是一...

    c++ socket编程实例(服务端及客户端)

    在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要工具。Socket是操作系统提供的接口,允许程序通过网络进行通信。本实例提供了C++实现的服务端(server.cpp)和客户端...

Global site tag (gtag.js) - Google Analytics