C/S模式下的网络游戏服务器端编程,服务器端会对客...

计算机网络作业八及解答_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
计算机网络作业八及解答
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢本系列博客主要是以对战游戏为背景介绍3D对战网络游戏常用的开发技术以及C++高级编程技巧,有了这些知识,就可以开发出中小型游戏项目或3D工业仿真项目。
笔者将分为以下三个部分向大家介绍(每日更新):
1、实现基本通信框架,包括对游戏的需求分析、设计及开发环境和通信框架的搭建;
2、实现网络底层操作,包括创建线程池、序列化网络包等;
3、实战演练,实现类似于CS反恐精英的3D对战网络游戏;
技术要点:C++面向对象思想、网络编程、Qt界面开发、Qt控件知识、Boost智能指针、STL算法、STL、容器、Boost网络库、OpenGL坐标变换、OpenGL加载3D模型、MD2模型加载、MDL模型加载
好了,下面就让我们来开始今天的学习之旅,软件工程项目的第一步&&需求分析。
一、服务器端需求分析
1.项目简介
(1)背景简介:
该项目是以多玩家扮演的不同角色间的对战情形为背景实现的一个基于C/S架构的3D对战网络游戏的简单框架;
(2)C/S结构简介:
C/S 结构是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销;
(3)思考:
&如果你是本游戏的玩家,你希望游戏有哪些最基本的功能呢?
2.服务器端功能需求
(1)UML图:
&(注:该UML图使用astah建模软件绘制,一个非常简单实用的工具,大家可以尝试使用下。)
3.网络底层接口需求
(1)思考:
如果你想使用该游戏的网络底层进行二次开发,你希望这样的网络底层具备怎样的接口呢?
(2)UML图:
二、客户端需求分析
1.客户端界面功能需求
(1)分析思路:
作为网络游戏客户端,我们需要的最基本的界面显示包括哪些内容?
(2)总体界面显示需求UML图:
(3)登录界面显示需求UML图:
(4)注册界面显示需求UML图:
(5)游戏大厅界面显示需求UML图:
(6)3D场景界面显示需求UML图:
2.3D场景模块接口需求
(1)分析思路:
根据3D场景界面的显示需求,我们在3D场景模块需要提供哪些技术支持呢?
(2)UML图:
& 欢迎大家学习交流,如有不足恳请批评指正,转载请注明出处,感谢您的支持。如果您也喜欢我的博客可以持续关注我,让我们一起成长,共同进步。
& 生活很精彩 剔除杂质,留下对编程的穷极探索 纯粹追求。
阅读(...) 评论()求一个小程序要求如下:1.c/s模式2.客户端发一个信息“holle” 时
服务器端返回一个“holle”最好能用c编写
其他语言也行
msdn的例子:client:  C/C++ code  #include &stdio.h&
#include &winsock2.h&
void main() {
// Initialize Winsock.
WSADATA wsaD
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
if ( iResult != NO_ERROR )
printf(&Error at WSAStartup()\n&);
// Create a socket.
m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( m_socket == INVALID_SOCKET ) {
printf( &Error at socket(): %ld\n&, WSAGetLastError() );
WSACleanup();
// Connect to a server.
sockaddr_in clientS
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr( &127.0.0.1& );
clientService.sin_port = htons( 27015 );
if ( connect( m_socket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) {
printf( &Failed to connect.\n& );
WSACleanup();
// Send and receive data.
int bytesS
int bytesRecv = SOCKET_ERROR;
char sendbuf[32] = &Client: Sending data.&;
char recvbuf[32] = &&;
bytesSent = send( m_socket, sendbuf, strlen(sendbuf), 0 );
printf( &Bytes Sent: %ld\n&, bytesSent );
while( bytesRecv == SOCKET_ERROR ) {
bytesRecv = recv( m_socket, recvbuf, 32, 0 );
if ( bytesRecv == 0 || bytesRecv == WSAECONNRESET ) {
printf( &Connection Closed.\n&);
if (bytesRecv & 0)
printf( &Bytes Recv: %ld\n&, bytesRecv );
lz只要把客户端代码char sendbuf[32] = &Client: Sending data.&;修改成hellochar sendbuf[32] = &hello&;服务器端也做类似修改即可
server端  Python code  #!/usr/bin/python
import socket
HOST = '127.0.0.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
data = conn.recv(1024)
if not data: break
conn.send(&server: & + data)
conn.close()

参考资料

 

随机推荐