flightgear基于udp用c++传输信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Interneting_Plus/article/details/84790800

弄了好几天,终于明白怎么配置flightgear使其能够通过udp输出飞行信息,或者输入飞行信息把flightgear当做视景,控制飞机飞行,具体的set和get程序网上都有,下载之后,在flightgear首页找settings,最后一个框,Additional Setings,在里面填入具体协议就行了,set和get程序需要配置一下native_fdm协议,具体含义我上传的有个文档说的很详细,大家参考一下就行了。

展开阅读全文

基于UDP传输的socket网络通信

11-13

楼主CS专业大三在读生,网络的一个作业就是制作一个简单的 基于UDP传输的socket网络通信rnrn我其实都不是太懂= =反正自己做好后客户端报错10022,服务器端报错10047rnrn请求各位大侠帮忙~rnrn[size=16px][b]服务器端:[/b][/size]rnrn[code=c] #include rn#pragma comment(lib,"WS2_32.lib")rn#define CLIENT_IP "127.0.0.1" // 客户端地址rn#define CLIENT_PORT 5260 // 客户端端口rn#include rnint main()rnrn int iPort = CLIENT_PORT;rn WSADATA wsaData;rn SOCKET sRecvfrom; //sRecvfrom为服务器端套接口rn int iLen; //客户地址长度rn int iSend;//发送数据长度rn char buf[] = "I am a server";//要发送给客户的信息rn struct sockaddr_in ser,cli;//服务器和客户的地址rn int cli_len = sizeof(struct sockaddr_in);rn if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)//判断协议栈是否正确安装rn rn printf("Failed to load Winsock.\n");rn return -1;rn rn sRecvfrom = socket(AF_INET,SOCK_DGRAM,0);//创建服务器端套接口rn if(sRecvfrom == INVALID_SOCKET)rn rn printf("socket() Failed: %d\n",WSAGetLastError());rn return -1;rn rn //以下建立服务器端地址rn //使用IP地址族rn ser.sin_family = AF_INET;rn //使用htons()把双字节主机序端口号转换为网络字节序端口号rn ser.sin_port = htons(iPort);rn //htonl()把一个四字节主机序IP地址转换为网络字节序主机地址rn //使用系统指定的IP地址INADDR_ANYrn ser.sin_addr.s_addr = htonl(INADDR_ANY);rn //bind()函数进行套接字与地址的绑定rn if(bind(sRecvfrom,(LPSOCKADDR)&ser,sizeof(ser)) == SOCKET_ERROR)rn rn printf("bind() Failed: %d\n",WSAGetLastError());rn return -1;rn rn //初始化客户地址长度参数rn iLen = sizeof(cli);rn //进入一个无限循环rn while(1)rn rn //给连接的客户发送信息rn iSend = sendto(sRecvfrom,buf,sizeof(buf),0,(struct sockaddr *)&cli, cli_len);rn if(iSend == SOCKET_ERROR)rn rn printf("send() Failed: %d\n",WSAGetLastError());rn break;rn rn else if(iSend == 0)rn rn break;rn rn elsern rn printf("send() byte: %d\n",iSend);//发送字节数rn rn closesocket(sRecvfrom);//关闭客户端套接字rn rn WSACleanup();//中止了Windows Sockets在所有线程上的操作,释放资源rn return 0;rnrn [/code]rnrnrn[size=16px][b]客户端:[/b][/size]rn[code=c] #include rn#pragma comment(lib,"WS2_32.lib")rn#include rn#include rn#define SERVER_IP "127.0.0.1" // 服务器端IP地址rn#define SERVER_PORT 5260 // 服务器端口号rn#define DATA_BUFFER 1024 //默认缓冲区大小rnint main()rnrn WSADATA wsaData;rn SOCKET sClient;rn int iPort = SERVER_PORT;rn int iLen;//从服务器端接收的数据长度rn char buf[DATA_BUFFER];//接收数据的缓冲区rn struct sockaddr_in ser;//服务器端地址rn int ser_len = sizeof(struct sockaddr_in);rn //判断参数输入是否正确:client [Server IP]rn rn memset(buf,0,sizeof(buf));//接收缓冲区初始化rn //判断协议栈是否正确安装rn if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)rn rn printf("Failed to load Winsock.\n");rn return -1;rn rn //填写要连接的服务器地址信息rn ser.sin_family = AF_INET; // 默认rn ser.sin_port = htons(iPort); // 端口号 htons是由主机字节序转换为网络字节序rn //inet_addr()将命令行中输入的点分IP地址转换为二进制表示的网络字节序IP地址rn ser.sin_addr.s_addr = inet_addr(SERVER_IP);rn //建立客户端流式套接口rn sClient = socket(AF_INET,SOCK_DGRAM,0);rn if(sClient == INVALID_SOCKET) rn rn printf("socket() Failed: %d\n",WSAGetLastError());rn return -1;rn rnrn rn //从服务器端接收数据rn iLen = recvfrom(sClient,buf,sizeof(buf),0, (struct sockaddr *)&ser,&ser_len);rn if(iLen == 0)rn return -1;rn else if(iLen == SOCKET_ERROR)rn rn printf("recvfrom() Failed: %d\n",WSAGetLastError());rn return -1;rn rn elsern printf("recvfrom() data from server: %s\n",buf);rn rn closesocket(sClient);//关闭客户器端套接字rn WSACleanup();//中止了Windows Sockets在所有线程上的操作,释放资源rn return 0;rnrn [/code] 论坛

没有更多推荐了,返回首页