- 浏览: 104360 次
- 性别:
- 来自: 上海
最新评论
-
marx:
marx 写道make: *** No targets spe ...
php 性能分析工具xhprof使用手册 -
marx:
make: *** No targets specified ...
php 性能分析工具xhprof使用手册
c++ socket 消息构建
- 博客分类:
- 其他
客户端 :
/*
client.c
向服务器发送接收数据包
*/
#include <stdio.h>
#include <Winsock2.h>
#include<iostream>
#include <memory.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
void main()
{
WORD wVersionRequested;
WSADATA wsaData; //WSAata用来存储系统传回的关于WinSocket的资料。
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 sockClient = socket(AF_INET,SOCK_STREAM,0);// AF_INET ..tcp连接
//初始化连接与端口号
SOCKADDR_IN addrSrv;
//定义服务器地址端口
char* ip = "192.168.202.128";
u_short portNumber = 6000;
addrSrv.sin_addr.S_un.S_addr = inet_addr(ip);//本机地址,服务器在本机开启
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(portNumber);// 设置端口号
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//连接服务器
char recvBuf[50];
//必须要将非char类型指针转化为char*指针
int b = 1;
char* cb = (char*)&b;
char *a = "123";
char str[1024];
//copy内存
memcpy(str,cb,sizeof(b));
memcpy(str+sizeof(b),a,strlen(a)+1);
cout<<str<<endl;
send(sockClient,str,sizeof(str),0);
//发送数据到服务器端
//send(sockClient,cp,sizeof(a),0);
//从服务器接收数据
//recv(sockClient,recvBuf,10,0);//接受数据
//printf("%s\n",recvBuf);
closesocket(sockClient);//关闭连接
WSACleanup();
}
server.c
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <memory.h>
int main(int argc, char *argv[])
{
int sockfd,new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size,portnumber;
char hello[]="Hello LR\n";
int n;
char rbuf[1024];
if(argc!=2)
{
fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
exit(1);
}
if((portnumber=atoi(argv[1]))<0)
{
fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
exit(1);
}
/* 服务器端开始建立socket描述符 */
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr,"Socket error:%s\n\a",strerror(errno));
exit(1);
}
/* 服务器端填充 sockaddr结构 */
bzero(&server_addr,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
server_addr.sin_port=htons(portnumber);
/* 捆绑sockfd描述符 */
if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
fprintf(stderr,"Bind error:%s\n\a",strerror(errno));
exit(1);
}
/* 监听sockfd描述符 */
if(listen(sockfd,1)==-1)
{
fprintf(stderr,"Listen error:%s\n\a",strerror(errno));
exit(1);
}
while(1)
{
/* 服务器阻塞,直到客户程序建立连接 */
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr *)NULL,NULL))==-1)
{
fprintf(stderr,"Accept error:%s\n\a",strerror(errno));
exit(1);
}
fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));
n = recv(new_fd,rbuf,sizeof(rbuf),0);
if(n>0){
// 解客户端的消息
int a;
char c[1024];
memcpy(&a,rbuf,4);
memcpy(c,rbuf+4,6);
printf("recv msg:%d\n",a);
printf("recv msg:%s\n",c);
}
/* 这个通讯已经结束 */
close(new_fd);
/* 循环下一个 */
}
close(sockfd);
exit(0);
}
发表评论
-
Discuz插件编写教程
2013-10-21 15:23 2116Discuz插件编写教程: 1, ... -
Android
2012-12-25 13:48 9141. 请描述下 Activity ... -
linux 消息队列 实例
2012-09-25 11:42 1029前言: 消息队列就是一个消息的链表。可以把消息 ... -
Makefile上手教程(转载)
2012-09-25 10:46 1087译者自述: 最开始接触开源软件时,觉得make很神秘,打 ... -
Linux 信号signal处理机制
2012-09-24 15:55 842信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的 ... -
C++ TinyXml操作(含源码下载)
2012-09-24 15:18 973前言 TinyXML是一个 ... -
linux下C与C++混合编程
2012-09-21 10:36 1702首先,混合编程不是指在同一个文件里写C与C++。 比如说想 ... -
Linux 下编译C程序
2012-09-20 11:58 3151GCC 已不再是主要针对GNU项目自身的软件的小型 C ... -
VS2010快捷键
2012-09-10 15:30 788VS2010快捷键 有人发了VS2 ... -
mysql 备份
2011-06-10 16:15 4191,直接将MySQL数据库压缩备份,不能在mysql模式下使用 ... -
Apache 虚拟机简单配置
2011-03-24 11:57 4878Apache 虚拟机简单配置 配置虚拟机主要是基于主机 ... -
svn的使用
2011-03-17 16:10 10401,svn中有几个重要的概念:branche,tag,trun ... -
社交网页游戏解析之产品篇
2010-06-03 15:20 994转载 ... -
常见手机参数含义
2010-05-18 14:45 10801,屏幕大小:如3.5英寸,它是指手机屏幕对角线的长度。 ... -
Memcache的使用和协议分析详解
2009-08-13 15:44 868作者:heiy ... -
CS vs BS
2009-08-07 09:12 1703C/S又称Client/Serv ... -
优秀网站源码、编程源码下载网站大集中
2009-08-06 17:41 942优秀网站源码、编程源码下载网站大集中 1.51源码:ht ...
相关推荐
基于C++ 使用 UDP Socket 实现可靠文件传送(构建简单的文件传输协议)【100013164】
掌握C语言形式的Socket编程接又用法,能够正确发送和接收网络数据包; 分为客户端和服务端
Linux系统具有高效的网络功能和稳定的性能,因此被广泛应用于服务器领域,Linux是云计算的核心组成部分,被广泛用于构建云平台和云服务。许多知名的云计算服务提供商都采用Linux系统作为其基础架构,一些游戏平台和...
如果你想在Windows 平台上构建服务器应用,那么I/O 模型是你必须考虑的。Windows 操作 系统提供了选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、 重叠I/O(Overlapped I/O)和完成端口...
介绍了Socket的工作机制和基于CAsyncSocket 类的Sockets编程的基本方法。通过一个应用实例,编写服务端和客户端代码,实现多人之间信息传递。
以socket构建服务器和客户端架构,实现c++和unity两客户端通过服务器传输数据
https://blog.csdn.net/mfcing/article/details/50118591 这个博客的代码,很简单。主要多线程这个比较好,可以好好研究。如果行可以用于pc的服务器。
编写单位: 达内IT培训集团 C++教学研发部 编写人员: 闵卫 定稿日期: 2015年11月20日 星期五WEBCRAWLER 网络爬虫实训项目 2 1. 项目概述 互联网产品形形色色,有产品导向的,有营销导向的,也有技术导向的,但是 ...
Socket.IO C ++客户端构建静态库。椰子足pod 'SocketIO-Client-CPP' 仅此回购的维护者发布新版本时,您需要更新Headers/** 替换libUniversalDebug.a 替换libUniversalRelease.a 更新SocketIO-Client-CPP.podspec $ ...
通过类型流轻松构建消息。用法连接到另一个 zmq 套接字并发送消息: #include "zmqcpp.h"using namespace zmqcpp;Context ctx;Socket socket(ctx, xreq);socket.setsockopt(linger, 0);socket.connect("tcp://...
标准c库大全:C++标准库介绍 疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/VC/Article12860.html 标准库中提供了C基本设施虽然C标准库随着C标准折腾了许多年直到标准出台才正式定型但是在标准库实 现上...
tcp服务器,使用非常简单,只要实现具体的tcp会话(TcpSession类)逻辑,使用模板的方式可以快速的构建高性能的服务器。 对套接字多种操作的封装。 线程库 使用线程实现的简单易用的定时器。 信号量。 线程组。 简单...
Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版 原书名:Pro Android C++ with the NDK 原出版社: Apress 作者: (美)Onur Cinar 译者: 于红 佘建伟 冯艳红 丛书名: 移动开发...
将会把重点放在如何写代码上,而不会花太多的篇幅讲解背后的计算机基础原理,涉及到的地方会给出相应书籍的具体章节,但这并不代表这些理论知识不重要,事实上理论基础相当重要,没有理论的支撑,构建出一个高性能...
字符串传输主要用于简单的应用,比较复杂的应用(比如Java和C++进行通信),往往需要构建自己的应用层规则(类似于应用层协议),并用字节来传输。 2.基于字符串传输的Socket案例 1)服务器端代码(基于控制台的应用程序...
tcp/udp客户端,接口简单易用并且是线程安全的,用户不必关心具体的socket api操作。 tcp/udp服务器,使用非常简单,只要实现具体的tcp/udp会话(Session类)逻辑,使用模板的方式可以快速的构建高性能的服务器。 对...
windows socket api 封装库,采用重叠完成端口模型实现,引擎采用异步消息控制,实现了一个简明易用的网络框架,发送和接收数据全都采用异步模式,发送和接收数据都不会给调用线程带来等待或者延迟,同时引擎实现了两...
基于C++实现的轻量级Web服务器源码+项目说明.zip 开发部署环境 操作系统: Ubuntu 16.04 编译器: g++ 5.4 版本控制: git 自动化构建: cmake 集成开发工具: CLion 编辑器: Vim 压测工具:WebBench 核心功能及...