本文主要是介绍Flash/AS3与C++通过socket通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
c++部分 - ///main.cpp
-
- #include <iostream> ///加载需要的头文件 关于输入输出
- #include <winsock2.h> ///socket套接字头文件
- using namespace std; ///使std命名空间全部展开不用每次在写std::前缀了
-
-
- WSADATA wsaData;//WSADATA 是一个结构 说明需要装载的dll的版本相关信息
- SOCKET listeningSocket;//监听连接的socket
- SOCKET newConnection;//已经连接的socket
- SOCKADDR_IN serverAddr;//服务器的相关信息
- SOCKADDR_IN clientAddr;//连接端的相关信息
- char message[256;//用来读取客户的发送来的消息
-
-
- int main(int argc, char *argv[) ///程序的入口
- {
-
- //装载dll文件
- WSAStartup(MAKEWORD(2,2),&wsaData);
- //创建一个新的嵌套字来监听客户端连接,使用TCP协议
- listeningSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
- //建立SOCKADDR_IN结构,为bind做好准备
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_port = htons(30006);
- serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
-
- bind(listeningSocket,(SOCKADDR*)(&(serverAddr)),sizeof(serverAddr));
-
- listen(listeningSocket,5); //开始监听,最多可以处理的连接请求为5
-
- int ClientAddrLen = sizeof(struct sockaddr_in); //struct sockaddr_in结构的大小
- //****等待连接,一直阻塞到获得连接
- //返回连接的socket
- //参数1 被绑定的socket
- //参数2 当发生请求时被填充的结构
- //参数3 第2个参数的结构大小 这里必须给的是地址
- newConnection = accept(listeningSocket,(SOCKADDR*)(&clientAddr),&ClientAddrLen);
-
- //****发送数据****
- //参数1是已连接的socket
- //参数2是一个字符串
- //参数3是字符串的大小
- //参数4是状态默认为0
- send(newConnection,"socket is ok\0",(int)strlen("socket is ok\0")+1,0);
-
- //****接收数据****
- //参数1是已连接的socket
- //参数2是一个char数组
- //参数3是传送中最多所能容纳的字节数
- //参数4是状态默认0
- recv(newConnection,message,256,0);
-
- cout<<"flash穿过的参数是"<<message<<endl;
-
- //关闭socket
- closesocket(newConnection);
- closesocket(listeningSocket);
- WSACleanup();
-
- system("PAUSE"); ///让屏幕出现按任意键结束的提示没有此句程序运行直接退出
- return EXIT_SUCCESS; ///返回
- }
设置编译环境: [devC++]工具->编译选项,然后在下边的在连接命令行加入打勾,输入-lwsock32, [code::block]中直接在linker libraries 里面添加wsock32 AS3部分 - ///main.as
-
- package
- {
- import flash.utils.ByteArray;
- import flash.net.Socket;
- import flash.events.ProgressEvent
- import flash.display.Sprite;
-
- public class Client extends Sprite
- {
- private var socket:Socket = new Socket();
- private var byteArray:ByteArray = new ByteArray();
- public function Client()
- {
- socket.connect("127.0.0.1",30006);
- socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );
- }
- function onSocketData(e:ProgressEvent ):void
- {
- socket.readBytes(byteArray);
- trace("c++过来的参数:"+byteArray);
- socket.writeUTFBytes("good bye");
- socket.flush();
- }
- }
- }
|
这篇关于Flash/AS3与C++通过socket通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!