SDL_net_中文教程

SDL_net_中文教程

ID:37897607

大小:64.50 KB

页数:10页

时间:2019-06-02

SDL_net_中文教程_第1页
SDL_net_中文教程_第2页
SDL_net_中文教程_第3页
SDL_net_中文教程_第4页
SDL_net_中文教程_第5页
资源描述:

《SDL_net_中文教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、翻译来之wiki网站,翻译的有点烂。黄建峰2011年4月27日这个教程介绍如何在你的程序中使用SDL_net实现网络功能.在教程开始之前推荐您先了解下BSDSockets。使用TCP如果你需要一个可靠的但是有点慢的链接,TCP符合你的需求:此协议是面向连接的:当你连接到一个主机,以及使用socket转换数据.数据将无损的有序到达目的地.在游戏中,当你不需要很快的链接的时候TCP是被用的最广泛的一个协议。虽然这样,但是如果你需要数据有序的无损的到达目的地,TCP是你最好的选择(UDP不是最好的选择).在这简单的client-server例子中,我们将做如下的事情:服务端:1.初始

2、化SDL_net库2.设置监听的端口3.打开一个socket绑定端口4.接收连接5.接受数据6.对数据进行处理7.清理,退出客户端:1.初始化SDL_net库2.解析服务器地址3.打开一个socket4.从用户出读取数据5.发送数据6.清理,退出如果你有丰富的socket编程经验,你会发现SDL_net是非常容易就可以上手的.在接收到连接后,我们将会得到关于主机的信息.这是可选的,只是为了写本教程在这里稍微的提下.还要注意的是服务器接收和管理的时候一次只能有一个连接,当然你可以使用这些技术来管理同时的多个连接(使用线程)。代码:这里是服务器代码:#if0#!/bin/shgcc

3、-Wall`sdl-config--cflags`tcps.c-otcps`sdl-config--libs`-lSDL_net exit#endif #include#include#include #include"SDL_net.h" intmain(intargc,char**argv){TCPsocketsd,csd;/*定义服务端Socket,客户端socket*/IPaddressip,*remoteIP;/*定义本机ip,客户端ip*/intquit,quit2;charbuffer[512];/*接收数

4、据缓存*/ if(SDLNet_Init()<0){fprintf(stderr,"SDLNet_Init:%s",SDLNet_GetError());exit(EXIT_FAILURE);} /*解析主机和端口,NULL为本机默认,端口2000*/if(SDLNet_ResolveHost(&ip,NULL,2000)<0){fprintf(stderr,"SDLNet_ResolveHost:%s",SDLNet_GetError());exit(EXIT_FAILURE);} /*打开一个TCPsocket网络(监听主机的端口)*/if(!(sd=SDLNet_

5、TCP_Open(&ip))){fprintf(stderr,"SDLNet_TCP_Open:%s",SDLNet_GetError());exit(EXIT_FAILURE);} /*等待连接,发送数据*/quit=0;while(!quit){/*检查sd是否有新的链接.*如果有,接受,然后给链接打开一个新的socket*/if((csd=SDLNet_TCP_Accept(sd))){/*我们用csdsocket连接到客户端*sd会被保留,等待下一个连接*/ /*获取远程地址*/if((remoteIP=SDLNet_TCP_GetPeerAddress(csd))

6、)/*输出地址,和端口*/printf("Hostconnected:%x%d",SDLNet_Read32(&remoteIP->host),SDLNet_Read16(&remoteIP->port));elsefprintf(stderr,"SDLNet_TCP_GetPeerAddress:%s",SDLNet_GetError());quit2=0;while(!quit2){if(SDLNet_TCP_Recv(csd,buffer,512)>0){printf("Clientsay:%s",buffer); if(strcmp(buffer,"exit

7、")==0)/*中断连接*/{quit2=1;printf("Terminateconnection");}if(strcmp(buffer,"quit")==0)/*退出程序*/{quit2=1;quit=1;printf("Quitprogram");}}} /*关闭客户端socket*/SDLNet_TCP_Close(csd);}} SDLNet_TCP_Close(sd);/*关闭服务端socket*/SDLNet_Quit(); returnEXIT_SUCCESS;}这

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。