Cocos2d-x中Socket的简单使用
来源:互联网 发布:vmware10 for mac下载 编辑:程序博客网 时间:2024/05/17 03:39
今天总结一下Socket的使用方法吧,有在百度。。上面找到的(下面有百度的链接,写的不全的地方,大家可以看一下链接,)。。。如果哪位大神有更换的demo,求分享!!!
Cocos2d-x中有关网络请求的:get post put delete(后两者我在开发中很少用),还有就是 Socket(用于及时通讯,网络游戏中的队友通话)。
在vs下面新建一个一个工程(记住不是Cocos项目!!!)C++文件。作为Server
百度上面的相关解释:http://baike.baidu.com/view/2355183.htm?fr=aladdin
ServerDemo.cpp:
// WebSocketDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <WinSock2.h>#include <iostream>#include "windows.h"#pragma comment(lib,"ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){//Windows下面的网络编程WORD wVersionRequested;WSADATA wsaData;//用于接受Windows Socket 的结构信息int err;wVersionRequested = MAKEWORD(1,1); //请求1.1版本的windows 库err = WSAStartup(wVersionRequested,&wsaData);if (err !=0){return -1;//返回值为 0 表示 成功申请 WSAStartup}if (LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){//检测低字节是不是 1 高字节是不是 1 ,确定是不是我们请求的 1.1版本WSACleanup();// 否则用这个函数清除信息,结束return -1;}/************************************************************************//* 以上是windows需要添加的内容,Mac下面不用添加,直接抄写就行,每次都一样,以下才是服务器端需要写的代码 *//************************************************************************/// 1. 创建Socket //类型 、流式Socket 、协议int socket_fd = socket(AF_INET,SOCK_STREAM,PF_UNSPEC);if (socket_fd == -1){//如果socket返回 -1就 返回,防止崩。。。。printf("Server Socket Err");return -1;}// 2. bind 绑定sockaddr_in serverAddress;serverAddress.sin_family = AF_INET; //一般来说AF_INET(地址族)PF_INET(协议族)serverAddress.sin_addr.S_un.S_addr = htonl(ADDR_ANY);serverAddress.sin_port = htons(7777);//必须 加上 htonsint bind_fd = bind(socket_fd,(sockaddr*)(&serverAddress),sizeof(serverAddress));if (bind_fd == -1){printf("bind fiald");return -1;}// 3 .Listen 监听if (listen(socket_fd,2) == -1){printf("listen faild");return -1;}// 4 .acceptint client_fd;sockaddr_in clientAddress;int s = sizeof(clientAddress);client_fd = accept(socket_fd,(sockaddr *)&clientAddress,&s);if (client_fd == -1){printf("accept falid");return -1;}// 5 . receivewhile (true){char buf[100];int recv_data = recv(client_fd,buf,100,0);if (recv_data == -1){printf("receive falid\n");continue;}else if(recv_data == 0){closesocket(socket_fd);}else{// 6 .send 发送数据printf("%s\n",buf); //打印客户端发来的数据char sentData[100];std::cin.getline(sentData,100,'\n');//获取一行数据,以‘\n’结束int sendLenght = send(client_fd,sentData,100,0);if (sendLenght == -1){printf("send falid");continue;}}}// 7 . closeclosesocket(client_fd);return 0;}
注意在开头引入的头文件,NotOneLess!!!
下面是客户端:
ClientDemo.cpp
// ClientSocketDemo.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<winsock.h>#include <iostream>#include "windows.h"#pragma comment(lib,"ws2_32.lib")int _tmain(int argc, _TCHAR* argv[]){WORD wVersionRequested;WSADATA wsaData;//用于接受Windows Socket 的结构信息int err;wVersionRequested = MAKEWORD(1,1); //请求1.1版本的windows 库err = WSAStartup(wVersionRequested,&wsaData);if (err !=0){return -1;//返回值为 0 表示 成功申请 WSAStartup}if (LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1){//检测低字节是不是 1 高字节是不是 1 ,确定是不是我们请求的 1.1版本WSACleanup();// 否则用这个函数清除信息,结束return -1;}// 1 . socket,int socket_fd = socket(AF_INET,SOCK_STREAM,PF_UNSPEC);if (-1 == socket_fd){printf("client socket falid");return -1;}// 2 . contectsockaddr_in setverAddress; //服务器的地址setverAddress.sin_port = htons(2223); //iPsetverAddress.sin_family = AF_INET;setverAddress.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");int connect_fd = connect(socket_fd,(sockaddr *)&setverAddress,sizeof(setverAddress));if (connect_fd == -1){printf("contect falid ");return -1;}// 3 sendwhile (true){char sendData[100];std::cin.getline(sendData,100,'\n');if (send(socket_fd,sendData,100,0) == -1){printf("send faild");continue;}// 4 . receive char receData[100];int receLen = recv(socket_fd,receData,100,0);if (receLen == -1){printf("received faild ");continue;}printf("%s\n",receData);// 输出服务器传过来的}// 5. closeclosesocket(socket_fd);getchar();return 0;}
运行界面如图:
先启动Server ,在启动 client
1 0
- Cocos2d-x中Socket的简单使用
- Cocos2d-X中使用Socket
- Cocos2d-X中使用Socket
- Cocos2d-x中使用Socket方法总结
- cocos2d-x quick3.3 中使用socket
- Cocos2d-x中使用Socket方法总结
- Cocos2d-X中使用ProgressTimer实现一些简单的效果
- Cocos2d-X中使用ProgressTimer实现一些简单的效果
- Cocos2d-X中使用ProgressTimer实现一些简单的效果
- Cocos2d-X CCTableView的简单使用
- Cocos2d-x Tutorial 之 Socket的使用(1)
- Cocos2d-x Tutorial 之 Socket的使用(2)
- cocos2d-x中CCTableView的使用
- cocos2d-x中schedule的使用
- Cocos2d-x 中 CCNotificationCenter 的使用
- cocos2d-x中CCTableView的使用
- Cocos2d-x中CCUserDefault的使用
- Cocos2d-x中控件CCControlStepper的使用
- 解决ThinkPHP中开启调试模式无法加载模块的问题。
- SQL优化相关--转载
- matlab灰度共生矩阵提取纹理特征
- 好科技好技术
- 方格取数
- Cocos2d-x中Socket的简单使用
- Java并发框架——AQS之如何使用AQS构建同步器
- POJ 1890 - A Simple Problem with Integers (线段树 Splay)
- iOS本地数据存储的方式
- 北京华健面试题答案(oracle)
- Cocos2d-x中__Dictionary容器的使用详解
- error C2011: “Shape”:“class”类型重定义 问题的解决
- memberCache java客户端的使用
- Android自定义视图(一):带下划线的TextView