精华内容
下载资源
问答
  • c语言服务器

    2014-07-18 17:34:44
    c语言服务器
  • C语言服务器

    2017-10-24 20:00:07
    c语言Tcp写的服务器可接受来自多个客户端发送的文字,聊天
  • TCP c语言 服务器客户端简单代码 先开启服务器 在开启服务端 测试是否连接
  • 扫雷游戏服务器,使用C语言和socket通信实现排行榜等功能
  • C语言服务器,多版本

    2018-11-27 08:29:27
    libuv(timer、isprime、sleep),socket服务器(blocking、epoll、nonblocking、select、sequential、threaded)
  • 本例子用c语言描述服务器客户端异步通信模式,
  • C语言高精度计时-摘自PostgreSQL源码 万能的Makefile 直接复制然后保存为main.c.然后三个文件放到一个目录. cd 目录 #编译 make #运行 ./cluster 直接上代码 #include <stdio.h> #include <...

    依赖项

    直接复制然后保存为main.c.然后三个文件放到一个目录.

    cd 目录
    #编译
    make
    #运行
    ./cluster
    

    直接上代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>
    #include <time.h>
    #include  "instr_time.h"
    
    
    
    #ifndef __cplusplus
    
    #ifndef bool
    typedef char bool;
    #endif
    
    #ifndef true
    #define true ((bool) 1)
    #endif
    
    #ifndef false
    #define false ((bool) 0)
    #endif
    
    #endif
    
    //服务器数量
    #define SERVER_COUNT (5)
    
    #define RANGE_RANDOM(x,y) (x+rand()%(y-x+1))
    #define SE_PTR_ISNULL(ptr) (NULL  == ptr )
    #define SE_check_nullptr(ptr) do{\
        if (SE_PTR_ISNULL(ptr)){\
            fprintf(stdout, "Memory overflow\n");\
            goto SE_ERROR_CLEAR; \
        }\
    } while (0)
    
    //各服务器的配置信息
    
    struct SE_SERVER_ITEM {
        int32_t weight; //初始化设置的权限系数.这个值不会改变
        int32_t current_weight; //当前权重系数.
        int32_t serid; //服务器编号
        int32_t id; //当前连接自定义编号
        //其它连接信息略
    };
    
    //服务器集群信息
    
    struct SE_SERVER_CLUSTER {
        uint32_t count;
        struct SE_SERVER_ITEM **items;
    };
    
    //服务器集群配置信息
    
    struct SE_SERVER_CONF {
        //当前服务器编号
        int32_t id;
        //其它连接信息略
        //当前服务器允许的最大连接数
        uint32_t max_conn;
    };
    
    void cluster_free(struct SE_SERVER_CLUSTER **ptr) {
        struct SE_SERVER_CLUSTER *cluster = *ptr;
        uint32_t i = 0;
        if (!SE_PTR_ISNULL(cluster)) {
            for (i = 0; i < cluster->count; ++i) {
                if (!SE_PTR_ISNULL(cluster->items[i]))
                    free(cluster->items[i]);
            }
            if (!SE_PTR_ISNULL(cluster->items))
                free(cluster->items);
            free(cluster);
        }
        *ptr = NULL;
    }
    
    struct SE_SERVER_ITEM * get_next_server_index(struct SE_SERVER_CLUSTER *cluster) {
        uint32_t i = 0, total = 0, index = 0;
        for (i = 0; i < cluster->count; ++i) {
            cluster->items[i]->current_weight += cluster->items[i]->weight;
            total += cluster->items[i]->weight;
            if (-1 == index || cluster->items[index]->current_weight < cluster->items[i]->current_weight)
                index = i;
        }
        cluster->items[index]->current_weight -= total;
        return cluster->items[index];
    }
    
    bool init_cluster(struct SE_SERVER_CONF *serconf, uint32_t sconf_count, struct SE_SERVER_CLUSTER **ptr) {
        struct SE_SERVER_CLUSTER *cluster = NULL;
        uint32_t i = 0, index = 0;
        SE_check_nullptr((cluster = (struct SE_SERVER_CLUSTER *) calloc(1, sizeof (struct SE_SERVER_CLUSTER))));
        for (i = 0; i < sconf_count; ++i)
            cluster->count += serconf[i].max_conn;
        fprintf(stdout, "all connection count:%u\n", cluster->count);
        SE_check_nullptr((cluster->items = (struct SE_SERVER_ITEM **) calloc(cluster->count, sizeof (struct SE_SERVER_ITEM *))));
        for (i = 0; i < cluster->count; ++i) {
            SE_check_nullptr((cluster->items[index] = (struct SE_SERVER_ITEM *) malloc(sizeof (struct SE_SERVER_ITEM))));
            //访问权重可以在配置文件中设置 ,这里默认所有服务器的访问机会均等
            cluster->items[index]->current_weight = 1;
            cluster->items[index]->weight = 1;
            //按物理服务器的顺序依次使用各个服务器
            cluster->items[index]->serid = serconf[ i % sconf_count ].id;
            cluster->items[index]->id = index;
            ++index;
        }
        (*ptr) = cluster;
        return true;
    SE_ERROR_CLEAR:
        cluster_free(&cluster);
        return false;
    }
    
    int main(int argc, char** argv) {
        //3台服务器
        struct SE_SERVER_CONF serconf[SERVER_COUNT];
        struct SE_SERVER_CLUSTER *cluster = NULL;
        int32_t i = 0;
        instr_time before, after;
        double elapsed_msec = 0;
    
        srand(time(NULL));
        //初始化服务配置信息
        for (i = 0; i < SERVER_COUNT; ++i) {
            serconf[i].id = i;
            serconf[i].max_conn = RANGE_RANDOM(16, 64);
        }
    
        //根据服务配置信息,初始化服务器集群
        if (!init_cluster(serconf, SERVER_COUNT, &cluster))
            goto SE_ERROR_CLEAR;
    
        INSTR_TIME_SET_CURRENT(before);
        //访问服务器10000次
        for (i = 0; i < 10000; ++i) {
            struct SE_SERVER_ITEM *item = get_next_server_index(cluster);
            fprintf(stdout, "%d request\tuse server:%d\titem:%d\n", i, item->serid, item->id);
        }
        INSTR_TIME_SET_CURRENT(after);
        INSTR_TIME_SUBTRACT(after, before);
        elapsed_msec += INSTR_TIME_GET_MILLISEC(after);
        fprintf(stdout, "Time: %.3f ms\n", elapsed_msec);
    
        cluster_free(&cluster);
        return (EXIT_SUCCESS);
    SE_ERROR_CLEAR:
        cluster_free(&cluster);
        return (EXIT_FAILURE);
    }
    

    运行截图
    在这里插入图片描述

    展开全文
  • int thread_shutdown;//1为关闭线程池,0为打开线程池 pthread_t *tids;//tid数组 pthread_t mtid;//管理者线程的id int thread_max;//最大的线程数 int thread_min;//最小的线程数(销毁时需要) ...
  • Windows下简单的C语言服务器(UDP)

    千次阅读 2017-04-19 21:27:15
    简单的UDP的C语言版也来了 TCP: http://blog.csdn.net/mastic_29/article/details/70245038 --查看本机IP:ipconfig/all ---C语言实现 ---visual studio 2012 Server: #include #include...

    简单的UDP的C语言版也来了   TCP:http://blog.csdn.net/mastic_29/article/details/70245038

    --查看本机IP:ipconfig/all


    ---C语言实现

    ---visual studio 2012

    Server:

    #include <stdio.h>
    #include <winsock2.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    int main(void)
    {
    	//初始化wsa
    	WORD sockVision = MAKEWORD(2,2);
    	WSADATA wsadata;
    	//其他变量
    	SOCKET serSocket;
    	struct sockaddr_in remoteAddr;
    	struct sockaddr_in sin;
    	int ret = -1;
    	int nAddrlen = sizeof(remoteAddr);
    	char revdata[255];
    	char senddata[255];
    
    	if( WSAStartup(sockVision,&wsadata) != 0 )
    	{
    		printf("WSA初始化失败\n");
    		return 0;
    	}
    
    	//创建套接字
    	serSocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    	if(serSocket == INVALID_SOCKET)
    	{
    		printf("socket服务器创建失败\n");
    		return 0;
    	}
    
    	//绑定IP和端口
    	sin.sin_family = AF_INET;
    	sin.sin_port = htons(8888);
    	sin.sin_addr.S_un.S_addr = INADDR_ANY;
    	if( bind(serSocket,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR )
    	{
    		printf("绑定IP和端口\n");
    		return 0;
    	}
    
    	//循环接收数据
    	while(1)
    	{
    		ret = recvfrom(serSocket,revdata,255,0,(SOCKADDR*)&remoteAddr,&nAddrlen);
    		if(ret > 0)
    		{
    			revdata[ret] = 0x00;
    			printf("接收到一个连接:%s \n",inet_ntoa(remoteAddr.sin_addr));
    			printf("\n");
    			printf("客户:");
    			printf(revdata);
    			printf("\n");
    		}
    
    		if(strcmp(revdata,"bye") == 0)
    			break;
    
    		//发送数据
    		printf("我:");
    		scanf("%s",senddata);
    		sendto(serSocket,senddata,strlen(senddata),0,(SOCKADDR*)&remoteAddr,nAddrlen);
    	}
    
    	closesocket(serSocket);
    	WSACleanup();
    	return 0;
    }
    
    

    Client:

    #include <stdio.h>
    #include <winsock2.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    
    int main(void)
    {
    	WORD sockVision = MAKEWORD(2,2);
    	WSADATA wsadata;
    	SOCKET sclient ;
    	struct sockaddr_in clientAddr;
    	char senddata[255];
    	char revdata[255];
    	int ret = -1;
    	int len = -1;
    	if(WSAStartup(sockVision,&wsadata) != 0)
    	{
    		printf("WSA初始化失败\n");
    		return 0;
    	}
    
    	sclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    	if(sclient == INVALID_SOCKET)
    	{
    		printf("socket客户端创建失败\n");
    		return 0;
    	}
    
    	clientAddr.sin_family = AF_INET;
    	clientAddr.sin_port = htons(8888);
    	clientAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.224");
    	len = sizeof(clientAddr);
    
    	while(1)
    	{
    		printf("我:");
    		scanf("%s",senddata);
    		sendto(sclient,senddata,strlen(senddata),0,(SOCKADDR*)&clientAddr,len);
    		if(strcmp(senddata,"bye") == 0)
    			break;
    		ret = recvfrom(sclient,revdata,255,0,(SOCKADDR*)&clientAddr,&len);
    		if(ret > 0)
    		{
    			revdata[ret] = 0x00;
    			printf("\n");
    			printf("服务器:");
    			printf(revdata);
    			printf("\n");
    		}
    	}
    
    	closesocket(sclient);
    	WSACleanup();
    
    	system("pause");
    	return 0;
    }

    展开全文
  • windows下简单的C语言服务器(TCP)

    千次阅读 2017-04-19 20:44:33
    回顾下windows下网络方面的东西 首先写了下C语言的socket  ... printf("服务器:"); printf(revdata); printf("\n"); } } closesocket(sclient); WSACleanup(); system("pause"); return 0; }

    回顾下windows下网络方面的东西 首先写了下C语言的socket 

    --查看本机IP:ipconfig/all


    ---C语言实现

    ---visual studio 2012

    Server:

    #include <stdio.h>
    #include <winsock2.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    int main(void)
    {
    	//初始化wsa
    	WORD sockVision = MAKEWORD(2,2);
    	WSADATA wsadata;
    	//其他变量
    	SOCKET slisten;
    	SOCKET sClient;
    	struct sockaddr_in remoteAddr;
    	struct sockaddr_in sin;
    	int ret = -1;
    	int nAddrlen = sizeof(remoteAddr);
    	char revdata[255];
    	char senddata[255];
    
    	if( WSAStartup(sockVision,&wsadata) != 0 )
    	{
    		printf("WSA初始化失败\n");
    		return 0;
    	}
    
    	//创建套接字
    	slisten = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    	if(slisten == INVALID_SOCKET)
    	{
    		printf("socket监听者创建失败\n");
    		return 0;
    	}
    
    	//绑定IP和端口
    	sin.sin_family = AF_INET;
    	sin.sin_port = htons(8888);
    	sin.sin_addr.S_un.S_addr = INADDR_ANY;
    	if( bind(slisten,(LPSOCKADDR)&sin,sizeof(sin)) == SOCKET_ERROR )
    	{
    		printf("绑定IP和端口\n");
    		return 0;
    	}
    
    	//监听
    	if(listen(slisten,5) == SOCKET_ERROR)
    	{
    		printf("监听失败\n");
    		return 0;
    	}
    
    	//循环接收数据
    	while(1)
    	{
    		printf("等待连接.........\n");
    		sClient = accept(slisten,(SOCKADDR *)&remoteAddr,&nAddrlen);
    		if(sClient == INVALID_SOCKET)
    		{
    			printf("接受客户端失败,正在重试.........\n");
    			continue;
    		}
    		printf("接受客户端成功:%s\n",inet_ntoa(remoteAddr.sin_addr));
    
    		//接收数据
    		while(1)
    		{
    			ret = recv(sClient,revdata,255,0);
    			if(ret > 0)
    			{
    				revdata[ret] = 0x00;
    				printf("\n");
    				printf("客户:");
    				printf(revdata);
    				printf("\n");
    			}
    
    			if(strcmp(revdata,"bye") == 0)
    				break;
    
    			//发送数据
    			printf("我:");
    			scanf("%s",senddata);
    			send(sClient,senddata,strlen(senddata),0);
    			
    		}
    		closesocket(sClient);
    	}
    
    	closesocket(sClient);
    	WSACleanup();
    	return 0;
    }
    
    

    Client:

    #include <stdio.h>
    #include <winsock2.h>
    
    #pragma comment(lib,"ws2_32.lib")
    
    
    int main(void)
    {
    	WORD sockVision = MAKEWORD(2,2);
    	WSADATA wsadata;
    	SOCKET sclient ;
    	struct sockaddr_in serAddr;
    	char senddata[255];
    	char revdata[255];
    	int ret = -1;
    	if(WSAStartup(sockVision,&wsadata) != 0)
    	{
    		printf("WSA初始化失败\n");
    		return 0;
    	}
    
    	sclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    	if(sclient == INVALID_SOCKET)
    	{
    		printf("socket客户端创建失败\n");
    		return 0;
    	}
    
    	serAddr.sin_family = AF_INET;
    	serAddr.sin_port = htons(8888);
    	serAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.224");
    	if( connect(sclient,(SOCKADDR *)&serAddr,sizeof(serAddr)) == SOCKET_ERROR )
    	{
    		printf("socket客户端连接失败\n");
    		return 0;
    	}
    	while(1)
    	{
    		printf("我:");
    		scanf("%s",senddata);
    		send(sclient,senddata,strlen(senddata),0);
    		if(strcmp(senddata,"bye") == 0)
    			break;
    		ret = recv(sclient,revdata,255,0);
    		if(ret > 0)
    		{
    			revdata[ret] = 0x00;
    			printf("\n");
    			printf("服务器:");
    			printf(revdata);
    			printf("\n");
    		}
    	}
    
    	closesocket(sclient);
    	WSACleanup();
    
    	system("pause");
    	return 0;
    }

    展开全文
  • 1.cocos 3.10 cocostudio 3.10 tiledmap0.15.2 会用这一套工具的时候因为一开始选择的默认CSV结果导致create的时候报错了。改成base64即可 2.cocos2d-x中的静态类竟然会被析构,需要手动retain

    1.cocos 3.10  cocostudio 3.10 tiledmap0.15.2   会用这一套工具的时候因为一开始选择的默认CSV结果导致create的时候报错了。改成base64即可

    2.cocos2d-x中的静态类竟然会被析构,需要手动retain


    使用JSON进行通信的时候要注意:

    如果客户端和服务端用的json实现不一样,有可能会造成解析出错的情况,我今天遇到的情况就是这样,int无法识别

    我在服务端用的lua,下载了网上的一个json4lua  然后客户端用的CPP 下载了一个json4cpp cpp这边可以识别int,lua那边只能识别string,结果导致各种蛋疼


    另外cocostudio导出的csb  如果是可以改动的文本,在CPP里面要用TEXT,不要用label,否则也会有莫名其妙的问题


    今天在linux上使用mysql的时候出了问题,安装的时候把etc/init.d下面的ssh给搞没了,  后来xshell怎么都连不上,需要手动启动ssh

    然后mysql改编码的时候default-character-set=utf8只能放在[client]下面,否则不能启动MySQL


    当使用listview的裁剪功能的时候发现会出现莫名其妙的绿色背景,裁剪无效情况,网上一查是opengl的设置问题,要在AppActivity.java中加入这样的代码:


    package org.cocos2dx.cpp;
    
    
    import org.cocos2dx.lib.Cocos2dxActivity;
    import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
    
    
    public class AppActivity extends Cocos2dxActivity {
    	public Cocos2dxGLSurfaceView onCreateView() {  
            Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);  
            glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);  //仍不行可以试试8,8,8,8,16,0 
            return glSurfaceView;  
        } 
    }


    遇到一个坑:我在场景update中轮询网络状况,如果网络断开则加一层遮罩 提示网络正在重连, 但是场景使用了fade转场之后就会出问题。

    展开全文
  • 如题。 包头的一部分 #pragma pack(4) typedef struct _HEADER { uint8_t Magic[4]; uint8_t Version; uint8_t Reserved; uint8_t Command; uint8_t ClientOS; uint32_t Status;...
  • C语言并发服务器

    2014-02-17 22:29:06
    C语言并发服务器,包括客户端和服务器端。
  • c语言客户端服务器

    2014-05-07 14:16:13
    山大c语言限选课课程设计,服务器浏览器,linux系统
  • c语言tcp服务器端程序代码,c语言tcp服务器端程序代码
  • C语言web服务器

    2012-06-01 23:23:17
    web,服务器,C语言编写,实现了基本的http协议,在本地直接运行,无需安装
  • c语言udp服务器端代码

    2018-10-25 17:47:32
    c语言udp服务器端代码,代码亲自测试能用。socket编程。
  • c语言ftp服务器源代码

    2021-01-08 11:44:01
    c语言ftp服务器源代码,需要的欢迎下载研究. 另外,我这里很多好的资源, 需要找什么资源请私信我联系我, 我给你们上传.
  • RTSP 服务器C语言

    2019-09-10 15:28:26
    RTSP是实时流媒体传输协议,服务器和客户端之间通过RTSP协议实现握手和认证过程,通过RTP协议传输视频数据包,本资源通过C语言实现了RTSP服务器的功能。
  • 我主要是在Linux下进行C语言的开发,所以后面的实现都是基于Linux操作系统并用C语言来讲解。其它平台和语言需要考虑的问题是类似的只不过可能是实现细节上有一些差异,我尽量减少这些差异吧。注意一下讲解的所有内容...
  • C语言编写TCP服务器

    2017-03-23 20:16:47
    网络编程通过C语言实现TCP服务器编写
  • web服务器 C语言

    2016-02-18 12:58:37
    一个用C语言编写的WEB服务器,用socket编程
  • C语言客户端服务器

    2018-04-07 13:29:35
    客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。 客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭...
  • C语言实现的服务器端socket编程,使用select对多个客户端进行处理。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,238
精华内容 3,295
关键字:

c语言服务器

c语言 订阅