利用Socket实现C++与Flex通信(转)
来源:互联网 发布:左宗棠收复新疆 知乎 编辑:程序博客网 时间:2024/06/06 05:38
一、C++服务器端
(用的是Visual Studio 2008(05,03的应该也可以,VC++的可能需要稍微改动))
代码如下:
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;
short port=1300;//端口号
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化套接字
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//创建套接字
SOCKET sockConn;//用来和客户端通信的套接字
SOCKADDR_IN addrSrv;//用来和客户端通信的套接字地址
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(port);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//绑定端口
listen(sockSrv,5);//侦听
printf("Server %d is listening....../n",port);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char buf[4096];//接收的数据
char rbuf[100]="成功";//返回的数据
while(1)
{
//接受连接
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
printf("Accept connection from %s/n",inet_ntoa(addrClient.sin_addr));
//接收数据
int bytes;
if((bytes=recv(sockConn,buf,sizeof(buf),0))==SOCKET_ERROR){
printf("接收数据失败!/n");
exit(-1);
}
buf[bytes]='/0';
printf("Message from %s: %s/n",inet_ntoa(addrClient.sin_addr),buf);
//发送数据
if(send(sockConn,rbuf,strlen(rbuf)+1,0)==SOCKET_ERROR){
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s/n",inet_ntoa(addrClient.sin_addr),rbuf);
//清理套接字占用的资源
closesocket(sockConn);
}
}
运行效果如下:
二、Flex客户端(Flex Builder) 代码如下 <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="initApp();"> <mx:Script> <![CDATA[ import flash.net.Socket; private var socket:Socket; private function initApp():void { } private function StartTest():void { socket = new Socket("127.0.0.1",1300); socket.addEventListener(Event.CONNECT, connectHandler); socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function CloseTest():void { if(socket!=null && socket.connected) { trace("socket.connected:"+socket.connected); socket.close(); trace("socket.connected:"+socket.connected); } } private function connectHandler(event:Event):void { trace("connectHandler: " + event); socket.writeMultiByte(SendStr.text,"GB2312"); socket.flush(); } private function socketDataHandler(event:ProgressEvent):void { trace("socketDataHandler: " + event); var str:String=socket.readMultiByte(socket.bytesAvailable,"GB2312"); ReceiveStr.text = str; } ]]> </mx:Script> <mx:Text text="发送" y="11" x="18" fontWeight="bold" color="#ffffff"/> <mx:TextArea id="ReceiveStr" x="53" y="68"/> <mx:Text text="接收" y="69" x="18" fontWeight="bold" color="#ffffff"/> <mx:TextArea id="SendStr" y="10" x="53"/> <mx:Button label="Start" click="StartTest()" x="53" y="120"/> <mx:Button label="Close" click="CloseTest()" x="126" y="120"/> </mx:WindowedApplication> 三、运行 先运行C++服务器端,再运行Flex客户端,成功后如下图所示
- 利用Socket实现C++与Flex通信
- 利用Socket实现C++与Flex通信
- 利用Socket实现C++与Flex通信
- 利用Socket实现C++与Flex通信(转)
- 利用Socket实现C++与Flex通信(转)
- Flex Socket 与 C# 通信
- FLEX利用Socket与java进行通信
- Flex与C#socket通信(二)
- C语言--利用UDP实现socket通信
- Flex通信-与Java实现Socket通信实例
- java socket与 flex 通信
- flex与C# Socket通信
- Flex Socket与java通信
- flex socket与Java通信
- flex与C# Socket通信
- 实现QT与Flex、Flash的通信(基于Socket)
- Flex 利用Socket 实现断点续传
- 利用HTTPService实现Flex与服务器端低数据量通信
- Opencv 2.0在Windows下的安装与配置
- 很羞愧,自己还是家里蹲
- 一个非常简单的菜单栏折叠控制方法
- 全面解析5种常见悬挂——连杆支柱悬挂
- 向高手致敬
- 利用Socket实现C++与Flex通信(转)
- flex与.net
- 生活的更好
- 关于cookie
- 此情可待成追忆——九山顶畅游随想曲(一)
- C51 库函数(转)
- 已非昔日阿蒙!21世纪柴油发动机详解
- C#.NET防止SQL注入式攻击
- 一个背景变暗的div可拖动提示窗口,兼容IE、Firefox、Opera