如何 避免游戏服务器 给自己发送文件服务器

我在本机用hfs网络文件服务器上传了文件,但是我把地址发给我的朋友,他们打不开网页,如何解决
我在本机用hfs网络文件服务器上传了文件,但是我把地址发给我的朋友,他们打不开网页,如何解决
我和你一样
求解……没文件的时候能打开
有了就不能了..
- - 我已经知道了 因为我家是内网....
相关知识等待您来回答
互联网领域专家企业游戏服务器的建设_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
18页免费18页1下载券19页1下载券9页2下载券9页免费 5页免费12页1下载券2页1下载券11页1下载券2页1下载券
喜欢此文档的还喜欢5页1下载券20页免费64页免费20页免费12页免费
企业游戏服务器的建设|企​业​游​戏​服​务​器​的​建​设
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢1536人阅读
&&&&& web服务器为什么要压缩数据?
&&&&&& web服务器如果将要发送的网页经过压缩后,待发送的数据将会减少一半左右,将会节省很大一部分的带宽,从而提高自己的并发量和减少网页传输时间。加快网页的浏览。
&&&&&& 是不是web服务器开启压缩一定会提高性能?
&&&&&&& 不一定的,因为每次压缩,都需要对文件进行压缩算法。将会消耗一定cpu和I/O的。因此,当文件较小时没有必要开启压缩功能。
&&&&&& 本程序本人自己在ubuntu中编译成功,在ubuntu中经过Firefox中,window 系统IE 8,Firefox、chrome中测试成功。
本程序需要用到zlib压缩类库,没有装将无法成功,本人只提供在ubuntu中的代码及运行方式。希望大家谅解。关于用到的
zlib库中的知识,稍后会出新的博客做解释,关于gzip压缩的头部请看另外一篇博客。
使用zlib说明
源码及makefile下载地址:
运行过程:
1.将代码和makefile文件下载下来
2.在终端中转到代买和makefile所在的文件的目录中
3.执行make命令编译
4 执行生成的reage程序,(./reage)
5.在浏览器中输入 就可以看到结果了
(我的压缩内容时固定,不好意思了。也忘记输出压缩前的大小和压缩后的大小作比较了。因为内容少压缩的有点体现不出来的。重在功能实现的)
直接给大家上源代码。下面为源代码。(如有任何问题,希望大家指出来了)
*主要实现功能,对传输的数据使用gzip进行压缩了
*1.实现绑定本机机器的1024端口作为ReageWeb服务提供网页服务的端口。(避免与机器上装有web服务器产生端口冲突)
* 作者:Reage
* blog:http://blog.csdn.net/rentiansheng
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &sys/types.h&
#include &sys/socket.h&
#include &sys/un.h&
#include &netinet/in.h&
#include &arpa/inet.h&
#include &fcntl.h&
#include &string.h&
#include &sys/stat.h&
#include &signal.h&
#include &stdio.h&
#include &string.h&
#include &assert.h&
#include &zlib.h&
#define OS_CODE 0x03 /*Unix OS_CODE*/
#define DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION
#define DEFAULT_WINDOWSIZE -15
#define DEFAULT_MEMLEVEL 9
#define DEFAULT_BUFFERSIZE 8096
#define MAX 1024
#define METHOD 20 //获取数据的方式,使用字符串的长度
#define URI 255 //表示URI的最大长度
#define VERSION 15 //HTTP版本好的最大长度
#define TYPE 20
//表示文件的类型的长度
void app_exit();
static const char gzip_header[10] = {'\037', '\213', Z_DEFLATED, 0, 0, 0, 0, 0, 0, OS_CODE};
void put_long (unsigned char *string, unsigned long x) {
string[0] = (x & 0xff);
string[1] = ((x && 8) & 0xff) ;
string[2] = ((x && 16) & 0xff) ;
string[3] = ((x && 24) & 0xff);
@description:将数据使用gzip压缩后发给浏览器
@parameter
sockd:套接字
file: 要压缩的内容了
int gzip_buffer (int
sockd, char * msg, int len) {
z_//zlib使用的。
char in[MAX];//存放输入的数据
char send[MAX + 18 ];//存放压缩过后的数据
memcpy (send, gzip_header, 10);
memset (in, 0, len);
stream.zalloc = Z_NULL;
stream.zfree = Z_NULL;
stream.opaque = Z_NULL;
stream.avail_in = 0;
stream.next_in = Z_NULL;
memcpy (in, msg, len);
//压缩初始化。
int tmp_result = deflateInit2(&stream,
Z_DEFAULT_COMPRESSION,//压缩级别
Z_DEFLATED,//压缩方式
-MAX_WBITS,
Z_DEFAULT_STRATEGY);
if (Z_OK != tmp_result) {
printf(&deflateInit error: %d\r\n&, tmp_result);
stream.avail_in = //要压缩数据的长度
stream.next_in = //要压缩数据的首地址
stream.avail_out = MAX;
//可存放的最大输出结果的长多。就是压缩后数据的最大长度
stream.next_out = send + 10; //存放压缩数据的开始位置,send前十个字节用来放头部
ret = deflate (&stream,Z_FINISH); //压缩
assert (ret != Z_STREAM_ERROR);
switch (ret) {
case Z_NEED_DICT:
ret = Z_DATA_ERROR;
case Z_DATA_ERROR:
case Z_MEM_ERROR:
(void)inflateEnd (&stream);
have = MAX - stream.avail_
unsigned crc = crc32(0L, in, len);
char * tail = send + 10 +
put_long (tail, crc);
put_long (tail + 4, len);
write (sockd, send, have + 18);
deflateEnd (&stream);
@description:开始服务端监听
@parameter
ip:web服务器的地址
port:web服务器的端口
@result:成功返回创建socket套接字标识,错误返回-1
int socket_listen( char *ip, unsigned short int port){
int res_ //返回值
struct sockaddr_
struct in_addr in_
res = res_socket = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(res_socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET ;
address.sin_port =htons(port);
address.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr(&127.0.0.1&);
res = bind( res_socket, (struct sockaddr *) &address, sizeof( address ) );
if(res) { printf( &port is used , not to repeat bind\n& ); exit(101); };
res = listen(res_socket,5);
if(res) { printf( &l\n& ); exit( 102 );
return res_
@description:向客户端发送网页头文件的信息
@parameter
conn_socket:套接字描述符。
status:http协议的返回状态码。
@s_status:http协议的状态码的含义
@filetype:向客户端发送的文件类型
void send_http_head(int conn_socket){
char buf[MAX];
memset(buf, 0, MAX);
sprintf(buf, &HTTP/1.0 %d OK\r\n&, 200);
sprintf(buf, &%sServer: Reage Web Server\r\n&, buf);
sprintf(buf, &%sContent-Type: text/html\r\n&, buf);
sprintf(buf, &%sContent-Encoding: gzip\r\n\r\n&, buf);
write(conn_socket, buf, strlen(buf));
int main(int argc, char * argv[] ){
struct sockaddr_in client_
char buf[MAX];
int len = sizeof(client_addr);
char method[METHOD], uri[MAX], version[VERSION], type[TYPE];
char msg[] = &&br&&br&&h1&Reage Web Server gzip support text!&/h1&&br/&&h1&&a href = \&http://blog.csdn.net/rentiansheng\&&Reage blog&/a&&;
res_socket = socket_listen( &127.0.0.1&, 1024) ;
//当按ctrl+c结束程序时调用,使用app_exit函数处理退出过程
signal(SIGINT, app_exit);
conn_socket = accept( res_socket, (struct sockaddr * )&client_addr, &len );
printf(&reage\n&);
tmp = read (conn_socket, buf, MAX-1);
buf [MAX - 1] = 0;
send_http_head(conn_socket);
gzip_buffer (conn_socket, msg, strlen(msg));
close(conn_socket);
void app_exit(){
//回复ctrl+c组合键的默认行为
signal (SIGINT, SIG_DFL);
//关闭服务端链接、释放服务端ip和端口
close(res_socket);
printf(&\n&);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:83638次
积分:1672
积分:1672
排名:第9895名
原创:75篇
评论:120条
阅读:11600
(1)(1)(1)(1)(1)(4)(4)(3)(4)(5)(5)(4)(4)(4)(10)(8)(4)(1)(3)(3)(1)(1)(1)(3)扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于EPOLL机制的LINUX网络游戏服务器实现方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 qq发文件服务器拒绝 的文章

 

随机推荐