- 浏览: 1454589 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
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
#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;
}
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;
}
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
#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;
}
{
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;
}
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;
}
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;
//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;
}
}
return 0;
}
注:本程序使用的是VC6 IDE,编译时请在link中加入对ws2_32.lib库的引用.
发表评论
-
wxpython学习笔记
2011-01-13 21:21 2032出处:http://www.cnblogs.com ... -
ADO编程实用宝典
2009-05-08 13:05 1478目录 ADO编程实用宝典 目录 一引入A ... -
创建ACCESS的存储过程
2008-09-11 22:52 4803在Access自身的帮助中看到了Create Procedu ... -
实现服务器端的多线程SOCKET Server
2008-09-11 16:45 3413实现服务器端的多线程SOCKET Server 想要实现 ... -
轻量级xml读写模块 tinyXML
2008-09-11 16:32 2901文档和使用例子: http://www.grinningl ... -
基于TinyXML的XML文档操作(部分测试代码)
2008-09-11 16:31 2436#include <stdio.h> #incl ... -
使用tinyxml类解析XML
2008-09-11 16:26 2450读取和设置xml配置文件是最常用的操作,试用了几个C++的XM ... -
用VB制作网站登陆器
2008-08-25 20:59 4098Private Sub Command1_Click() Wb ... -
vb+Webbrowser控件详解
2008-08-25 20:54 3283方法 说明 GoBack 相当 ... -
VB自动提交表单问题
2008-08-25 14:32 2478需要知道表单名称呢,比如 <Form name=&quo ... -
BBS灌水机脚本(vb scritp, telnet, bbs, sterm)
2008-08-16 11:32 2520'****************************** ... -
c++下载网页的代码,VC6.0编译通过
2008-05-30 19:21 3859#include <winsock2.h> ... -
【译】C/S 多线程Socket类
2008-05-30 19:16 1678Multi-threaded Client/Server So ... -
C++ Socket Class for Windows
2008-05-30 18:59 1634Here, I present the source c ... -
字符串提取
2008-05-05 11:24 1304Function bTest(ByVal s As Strin ... -
VB用正则表达式提取网页中的链接
2008-05-05 10:37 2905VBScript code Function getUrl ... -
利用VB提取HTML文件中的EMAIL地址
2008-05-05 09:53 1194电子邮件(EMAIL)是INTERNET上应用最广泛的一种服务 ... -
VB6.0如何使用正则表达式
2008-05-04 20:39 8015最近在用VB6解决一个网页解析的应用,涉及到了正则。如何在VB ... -
VB写一个IE插件
2008-05-04 18:20 3073Q: 就类似于3721的插件一样,当用户浏览我的网站的时候,提 ... -
破解VisualStudio2005(vs2005) 的180天限制
2008-04-19 11:53 4568中文版本的软件本身是正式版,但内置的序列号却是180天试用版的 ...
相关推荐
在此基础上,利用C++对一些重复的、固定的操作进行封装,可以形成更为高效和可靠的C++ Socket程序。封装类可以包含初始化连接、数据发送和接收、异常处理等方法,这样在编写具体的应用程序时,开发者只需要关注业务...
关于压缩包中的www.NewXing.com文件,它可能包含了一个完整的C++ Socket程序示例。解压并查看源代码可以帮助你更深入地理解上述步骤如何在实际项目中实现。记住,学习Socket编程不仅要求理论知识,还需要动手实践,...
- **跨平台**: 只要遵循标准的Socket API,C++编写的Socket程序可以在多种操作系统上运行,如Windows、Linux、macOS等。 - **语言兼容性**: 描述中提到C++编写的库也可以被C#等其他语言调用,这意味着它可能提供了...
通过这些步骤和技巧,开发者可以构建起C++ Socket程序,实现网络上的数据传输。在实际开发中,可能还会涉及到更复杂的网络协议和架构设计,如HTTP、HTTPS、FTP等。理解并熟练掌握C++ Socket编程,是网络编程领域的...
在C++中,Socket编程是网络通信的基础,用于创建客户端和服务器端的连接。本话题主要探讨的是在C++ Socket编程中的阻塞模式与非阻塞模式,以及它们在多线程环境下的应用和资源管理。 一、阻塞与非阻塞模式 1. **...
C++ Socket通信框架是网络编程中的重要组成部分,它允许程序通过网络进行数据交换。在Windows平台上,使用C++实现Socket通信通常涉及到Windows Socket API(也称为Winsock)。本框架“HP-Socket”专为Windows环境...
C++ Socket 编程详解 C++ Socket 编程是指使用 C++ 语言和_socket 编程技术来实现网络应用的开发。Socket 编程是网络编程中的一种重要技术,它允许不同的计算机之间通过网络进行通信。 OSI 七层网络模型 OSI 七层...
C++ Socket库提供了一种在C++中实现网络编程的方法,允许程序通过Internet或本地网络发送和接收数据。Socket是操作系统提供的接口,它允许应用程序访问网络协议,如TCP/IP。本文档将深入探讨C++ Socket库的关键概念...
编译C++ Socket程序时,通常需要链接socket和nsl库。例如,编译命令可能是`g++ -o server server.cpp -lsocket -lnsl`和`g++ -o client client.cpp -lsocket -lnsl`。 压缩包中的"kehuduan"和"fuwuqi"可能是服务器...
建立客户端和客户端c++空项目,分别添加socketClient.cpp和sockServer.cpp, 根据注释配置,编译生成后就可以执行。客户端程序在visual studio 2015和2013上编译通过,服务端程序在visual studio 2015和2008上编译...
### C++ Socket编程:向固定网卡发送数据 #### 知识点概览 本文将基于给定的代码示例,深入探讨C++中的Socket编程技术,并解释如何使用Socket进行客户端编程来向指定的IP地址发送数据。我们将涵盖以下几个方面: - ...
在QT框架中,C++ Socket通信是实现网络数据交换的基础,它允许客户端和服务端通过网络进行数据传输。本文将深入探讨如何在QT中使用C++编写客户端和服务端的socket通信代码,以及涉及到的关键操作。 首先,我们需要...
C++ SOCKET编程是一种在C++中实现网络通信的技术,它基于Berkeley Sockets接口,允许开发者创建客户端和服务器应用程序,实现跨网络的数据传输。SOCKET是操作系统提供的一个接口,使得程序能够通过网络发送和接收...
C++ Socket编程是网络编程中的基础,用于在不同的设备或程序之间建立通信通道。源代码通常是程序员用C++编写的程序或库,用于实现特定功能,例如在这个案例中,是Socket通信。以下是对C++ Socket源代码的一些详细...
在IT领域,网络编程是不可或缺的一部分,而C++ Socket编程是实现TCP通信的重要技术。本示例中的"TCP Demo"提供了C++实现TCP客户端和服务器的简单应用,通过socketserver.cpp和socketclient.cpp两个文件来展示。下面...
该资源是一个基于C++编程语言实现的开发框架控件库,其设计灵感来源于Visual Studio 2005的界面和功能。这个框架的核心目标是提供一套高效、灵活且功能丰富的用户界面组件,使得开发者能够创建出类似专业集成开发...
在IT领域,网络通信是不可或缺的一部分,而C++作为强大的编程语言,提供了丰富的库支持进行网络...压缩包中的"**C++Socket编程**"文件可能包含了详细的代码示例和步骤解析,对于学习和理解C++ socket编程非常有帮助。
C++ Socket编程是一种在C++中实现网络通信的技术,它基于Berkeley Sockets API,用于构建客户端和服务器应用程序。在本资料中,我们将深入探讨C++ Socket编程的基础、原理以及高级应用,包括如何使用Ice进行分布式...
本文将深入探讨如何使用C/C++语言来创建一个简单的Socket聊天程序。这个程序适用于局域网内的通信,为初学者提供了理解Socket编程原理及实践操作的平台。 首先,让我们了解什么是Socket。Socket在计算机网络中是一...
在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要工具。Socket是操作系统提供的接口,允许程序通过网络进行通信。本实例提供了C++实现的服务端(server.cpp)和客户端...