加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flash/AS3与C++通过socket通信

发布时间:2020-12-15 18:17:56 所属栏目:百科 来源:网络整理
导读:C++部分 / / main . cpp #include? iostream ? / 加载需要的头文件 关于输入输出 #include? winsock2 . h ? / socket套接字头文件 using namespace std ; ? / 使std命名空间全部展开不用每次在写std : : 前缀了 WSADATA wsaData ; / WSADATA 是一个结构 说明

C++部分


  1. //main.cpp

  2. #include?<iostream> ?/加载需要的头文件 关于输入输出
  3. #include?<winsock2.h>?/socket套接字头文件
  4. using namespace std;?/使std命名空间全部展开不用每次在写std::前缀了


  5. WSADATA wsaData;/WSADATA 是一个结构 说明需要装载的dll的版本相关信息
  6. SOCKET listeningSocket/监听连接的socket
  7. SOCKET newConnection/已经连接的socket
  8. SOCKADDR_IN serverAddr/服务器的相关信息
  9. SOCKADDR_IN clientAddr/连接端的相关信息
  10. char message[256]/用来读取客户的发送来的消息


  11. int?main(int?argc,?char?*argv[)  /程序的入口
  12. {
  13. ????
  14. ? ???//装载dll文件
  15. ? ???WSAStartup(MAKEWORD(2)&wsaData;
  16. /创建一个新的嵌套字来监听客户端连接,使用TCP协议
  17. ? ???listeningSocket?=?socket(AF_INETIPPROTO_TCP/建立SOCKADDR_IN结构,为bind做好准备
  18. ? ???serverAddr.sin_family?=?AF_INET;
  19. ? ???serverAddr.sin_port?=?htons(30006.sin_addr.s_addr?=?htonl(INADDR_ANY
  20. ? ???bind(listeningSocket(SOCKADDR*(&(serverAddr;??

  21. ? ???listen;??/开始监听,最多可以处理的连接请求为5

  22. ? ???int?ClientAddrLen?=?sizeof(struct sockaddr_in; ??/struct sockaddr_in结构的大小
  23. /****等待连接,一直阻塞到获得连接
  24. /返回连接的socket
  25. /参数1 被绑定的socket
  26. /参数2 当发生请求时被填充的结构
  27. /参数3 第2个参数的结构大小 这里必须给的是地址
  28. ? ???newConnection?=?accept&clientAddr&ClientAddrLen;

  29. /****发送数据**** 
  30. /参数1是已连接的socket
  31. ? ???//参数2是一个字符串
  32. ? ???//参数3是字符串的大小
  33. ? ???//参数4是状态默认为0
  34. ? ???send(newConnection"socket is ok"int)strlen+1;

  35. /****接收数据****
  36. /参数1是已连接的socket
  37. ? ???//参数2是一个char数组
  38. ? ???//参数3是传送中最多所能容纳的字节数? 
  39. /参数4状态默认0
  40. ? ???recv256;

  41. ? ???cout<<"flash穿过的参数是"<message<endl; ? ??

  42. /关闭socket
  43. ? ???closesocket;
  44. ? ???closesocket;
  45. ? ???WSACleanup;

  46. ????system"PAUSE"/让屏幕出现按任意键结束的提示没有此句程序运行直接退出
  47. ????return EXIT_SUCCESS/返回
  48. }

设置编译环境:

[devC++]工具->编译选项,然后在下边的在连接命令行加入打勾,输入-lwsock32,

[code::block]中直接在linker libraries?里面添加wsock32


AS3部分



///main.as

  • package
  • {
  • ? ??import?flash.utils.ByteArray;
  • ? ??.netSocketevents.ProgressEvent
  • ? ??.display.Sprite;
  • ? ?
  • ????public?class?Client?extends?Sprite
  • ? ??{
  • ? ? ? ?private?var?socket:Socket?=?new?;
  • ? ? ? ?private?var byteArray:ByteArray?new?ByteArraypublic?function Client)
  • ? ? ? ?{
  • ? ? ? ? ? ?connect"127.0.0.1";
  • ? ? ? ? ? ?addEventListener(?ProgressEvent.SOCKET_DATA}
  • ? ? ? ?function onSocketData(e:ProgressEvent?void
  • ? ? ? ?readBytes(byteArray;
  • ? ? ? ? ? ?trace"c++过来的参数:"+byteArray.writeUTFBytes"good bye"flush}
  • ? ??}
  • }
  • (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读