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)&wsaData;
- /创建一个新的嵌套字来监听客户端连接,使用TCP协议
- ? ???listeningSocket?=?socket(AF_INETIPPROTO_TCP/建立SOCKADDR_IN结构,为bind做好准备
- ? ???serverAddr.sin_family?=?AF_INET;
- ? ???serverAddr.sin_port?=?htons(30006.sin_addr.s_addr?=?htonl(INADDR_ANY
- ? ???bind(listeningSocket(SOCKADDR*(&(serverAddr;??
-
- ? ???listen;??/开始监听,最多可以处理的连接请求为5
-
- ? ???int?ClientAddrLen?=?sizeof(struct sockaddr_in; ??/struct sockaddr_in结构的大小
- /****等待连接,一直阻塞到获得连接
- /返回连接的socket
- /参数1 被绑定的socket
- /参数2 当发生请求时被填充的结构
- /参数3 第2个参数的结构大小 这里必须给的是地址
- ? ???newConnection?=?accept&clientAddr&ClientAddrLen;
-
- /****发送数据****
- /参数1是已连接的socket
- ? ???//参数2是一个字符串
- ? ???//参数3是字符串的大小
- ? ???//参数4是状态默认为0
- ? ???send(newConnection"socket is ok "int)strlen+1;
-
- /****接收数据****
- /参数1是已连接的socket
- ? ???//参数2是一个char数组
- ? ???//参数3是传送中最多所能容纳的字节数?
- /参数4是状态默认0
- ? ???recv256;
-
- ? ???cout<<"flash穿过的参数是"<message<endl; ? ??
-
- /关闭socket
- ? ???closesocket;
- ? ???closesocket;
- ? ???WSACleanup;
-
- ????system"PAUSE"/让屏幕出现按任意键结束的提示没有此句程序运行直接退出
- ????return EXIT_SUCCESS/返回
- }
设置编译环境:
[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}
? ??}
}