Articles of 客户端服务器

如何捕捉像Wireshark的所有udp消息没有滴?

我有两个程序udp发件人和消费者在本地主机上。 发送方以最快的速度生成四个字节的int消息,但消费者并没有得到所有的消息。 消费者最后一行stdout是 1484444 1999999 Wireshark拦截所有包,并慢慢处理它们。 我怎样才能在C程序中获得相同的行为? // sender.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #include <arpa/inet.h> #include <unistd.h> #include <string.h> int main() { int sock = socket(AF_INET, SOCK_DGRAM, 0); struct sockaddr_in dest; bzero(&dest, sizeof(dest)); dest.sin_family = AF_INET; dest.sin_port = htons(40500); inet_aton("127.0.0.1", &dest.sin_addr); int i; for (i = 0; i < 2000000; ++i) { sendto(sock, […]

使用C中的pipe道创build客户端和服务器时出现奇怪的行为

在这里,我试图创build一个简单的客户端和服务器使用pipe道。 我分叉一个进程,使孩子充当客户端和父母作为服务器。 以下是代码: #include<unistd.h> #include<stdlib.h> #include<stdio.h> #include<string.h> void errorMsg(char* msg) { printf("\n%s\n", msg); // exit(0); } int main() { int servfd[2]; int clntfd[2]; int chldpid; if(pipe(servfd) < 0) errorMsg("Unable to create server pipe.!!"); if(pipe(clntfd) < 0) errorMsg("Unable to create client pipe.!!!"); if((chldpid = fork()) == 0) { char* txt = (char*) calloc(256, sizeof(char)); close(servfd[1]); close(clntfd[0]); […]

对于客户端服务器程序,并行接收多个客户端连接请求的最佳方法是什么?

该程序是一个客户端服务器套接字应用程序与Linux上的C开发。 每个客户端都有一个远程服务器连接并将自己logging为在线。 在任何时间点,很可能会有几个客户端在线,所有客户端都试图连接到服务器,以便将自己logging为在线/忙/闲等。那么服务器如何处理这些并发请求。 什么是一个好的devise方法(对于每个连接请求,分叉/multithreading可能?)?

什么是一个明智的方式让服务器侦听客户端连接将会很less(在Linux上的套接字编程)

我必须监听传入客户端连接的端口,并为其提供一些数据。 为了处理多个客户端连接,我需要在一个循环中listen()和accept() 。 但是,我知道客户端连接将会非常less。 所以在一个循环中连续运行listen()和accept()并不是很有意义 – 这看起来很浪费。 我是疯了还是有更好的方式做到这一点。 我也在想,如果我sleep()运行while循环一秒钟的线程,我仍然会把CPU花费less很多(减less50%?(因为循环只是每隔一秒钟)。 但是在这种情况下,如果客户端连接在线程正在hibernate时进入,我会错过连接吗? 或者操作系统是否为我处理这个问题(也就是说,它意识到在这个端口上有一个侦听,并且以某种方式排队这个请求让这个侦听稍后消耗)?

有关accept()在C(Linux)套接字服务器客户端编程问题

我已经用Linux中的C编写了一个服务器和客户端程序。 代码如下: 服务器代码: #include<stdio.h> #include<string.h> //strlen #include<sys/socket.h> #include<arpa/inet.h> //inet_addr #include<unistd.h> //write int main(int argc , char *argv[]) { int socket_desc , client_sock , c , read_size; struct sockaddr_in server , client; char client_message[2000]; //Create socket socket_desc = socket(AF_INET , SOCK_STREAM , 0); if (socket_desc == -1) { printf("Could not create socket"); } puts("Socket created"); //Prepare […]

在C下实现multithreading应用程序

我正在实施一个像MySQL这样的小型数据库。它是大型项目的一部分。 现在我已经devise了核心数据库,我的意思是我已经实现了一个parsing器,我现在可以在我的数据库上执行一些基本的SQL查询..它可以存储,更新,删除和检索文件中的数据..截至目前罚款..但是我想在networking上实现这一点.. 我希望不止一个用户能够访问我的数据库服务器并同时对其执行查询…我正在Linux下工作,所以现在没有可移植性的问题.. 我知道我需要使用套接字是好的..我也知道我需要使用像线程池这样的概念,我将需要创build最大线程数,然后为每个客户端请求唤醒一个线程和分配它给客户.. 至于现在我无法弄清楚是如何将所有这些实际上捆绑在一起..我应该在哪里实现multithreading..在客户端/服务器端。 我的parsing器将如何被configuration为分别从每个客户端获取input?(主要是通过我认为的文件?) 如果任何人有想法如何我可以实施这个请告诉我bcos我卡在这里的项目… 谢谢.. :)

正确的FIFO客户端 – 服务器连接

我试图编写简单的客户端和服务器C程序,在不同的terminal相互通信。 服务器必须创build一个公共fifo并等待客户端。 与此同时,客户正在创build自己的FIFO,服务器的响应将会到来。 客户端的任务是向服务器发送由队列创build的名称,并返回ls命令的结果。 我find了一个答案,例如: fifo-server-program- example-using-named-pipes-in-linux-bash , how-to-send-a-simple-string-between-two-programs-使用pipe道 。 我从第三个链接的代码开始,并慢慢修改它。 我现在得到的是一个客户端从用户处获得input,将其发送到服务器并接收回来。 但它只能工作一次。 我不知道为什么。 主要function的主体如下。 我会很感激任何帮助。 编辑:我得到它的工作! :D代码如下,也许会帮助别人。 server.c代码: #include <unistd.h> #include <stdio.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> int main(int argc, char* argv[]) { int fds[2]; char tab[BUFSIZ]; int fd, n; char *myfifo = "/tmp/serwer"; char *myfifo2 = "/tmp/client"; pipe(fds); mkfifo(myfifo,0666); while(1) { fds[0]=open(myfifo2,O_RDONLY); […]

灵活的IPC在Linux上的Python解决scheme?

我正在编写一个Python程序,我正在考虑一个本地客户端 – 服务器模型,但我正在努力找出服务器与客户端进行通信的最佳方式。 一个简单的jar装解决scheme将是最好的 – 我不希望重新发明轮子。 这是我对这个计划的需求: 在Linux上运行 服务器和客户端在同一个系统上,所以我不需要通过networking。 延迟对于交互式用户来说不太可能是烦人的。 多个客户端可以连接到同一台服务器。 客户端独立于服务器启动,可随时连接/断开连接。 客户数量可以测量几十个; 我不需要很高的比例。 客户可以有几种不同的风格: stream读取器 – 读取连续的数据stream(实际上,这是全部文本)。 状态读取器 – 读取每隔一段时间更新一次的状态信息。 作家 – 发送一些数据到服务器,每次收到一些响应。 客户types1似乎够简单; 这是一个单向的哑pipe。 客户端types2更有趣一些。 我想避免简单地轮询服务器定期检查新数据,因为这会为用户带来明显的延迟。 当状态信息被更新时,服务器需要某种方式向所有且只有相关的客户端发信号,以便客户端可以从服务器接收更新的状态。 客户端types3必须是双向的; 它会将用户提供的数据发送到服务器,并在每次发送后收到某种响应。 我查看了Python的IPC页面( http://docs.python.org/2/library/ipc.html ),但是我不认为这些解决scheme都适合我的需要。 subprocess模块是完全不合适的,其他一切都比我想要的要低一点。 有效Python到Python IPC的问题不太一样; 我不需要传输Python对象,我并不特别担心CPU的效率,因为我只能关心Linux,而且对这个问题的答案也没有什么特别的帮助。 更新: 我不能接受一个答案,只是指出我在框架/库/模块/工具,而没有实际解释如何将它用于我的三种不同的服务器 – 客户端关系。 如果你说:“所有这些都可以用命名pipe道完成!” 我将不得不问“如何?” 代码片段将是理想的,但解决scheme的高级描述也可以工作。

一个简单的android客户端 – 服务器应用程序

我想写一个非常简单的应用程序(也许它不是那么简单)。 我想从我的电脑(无论是Windows或Linux)从Android手机上运行应用程序。 可以说我手机屏幕上会有几个button,每个button都会打开一个应用程序,比如记事本或计算器。 或甚至更好,我将有一个应用程序在我的电脑屏幕上(这也将被写入)可以说,在应用程序上的8个button,我会有相同的8个button在我的手机屏幕上,这将模仿,如果我点击我的电脑上的button屏幕。 我不想像GMote那样通过控制鼠标(触摸板)来做到这一点。 我有一些编程经验,但不是在Android。 我不知道从哪里开始,所以如果有人能把我带到正确的方向,我将不胜感激。 提前致谢… CS

如何编写一个连续监听的服务器作为服务

我正在写一个服务器,将不断监听客户端连接。 它不需要任何用户交互。 所以,我试图把它作为一种服务。 我成功地安装了它,但是除了显示错误1053之外它没有成功运行。我发现启动/停止方法应该在30秒内返回。 就我而言,这意味着我的服务器应该停止它的行动,并在30秒内返回。 我不能暗示这个约束在服务器上,因为客户端可能在任何时候连接。 任何人都可以告诉我一种方法来安装此服务器作为服务? 注1:我正在使用Windows平台,C#语言和VS 2010。 注2:也欢迎其他的想法。