jjzjj

无法建立服务器客户端连接 - C winsock 中的错误 10061

我正在尝试在我家中本地网络中的2台计算机上运行服务器客户端。第一台电脑是服务器,第二台是客户端。尝试连接服务器时出现错误10061。(“错误-连接失败。sockfd是164,errno是34,WSA是10061”)。错误10061表示-“连接被拒绝。无法建立连接,因为目标机器主动拒绝它。这通常是由于尝试连接到外部主机上不活动的服务——即没有运行服务器应用程序的服务。”我认为这可能是防火墙问题,所以我在我的防火墙中批准了我正在使用的端口,但它仍然不起作用。此外,两台计算机具有相同的IP(这是为什么?)。这是我的代码:服务器.c:#include#include#include#inclu

c++ - 为什么客户端忙于接收数据时select()有时会超时

我写过简单的C/S应用来测试非阻塞套接字的特性,这里简单介绍一下服务端和客户端://OnlinuxTheserverthreadwillsend//afiletotheclientusingnon-blockingsocketvoid*SendFileThread(void*param){CFile*theFile=(CFile*)param;intsockfd=theFile->GetSocket();set_non_blocking(sockfd);set_sock_sndbuf(sockfd,1024*64);//setthesendbufferto64K//getthetota

c - Linux TCP 连接被拒绝

我正在做一个TCP连接程序,我想将地址和连接步骤设置为一个函数。该程序可以编译,但是当我运行它时,屏幕显示:错误连接:连接被拒绝。请你帮助我好吗?这是服务器代码:#include#include#include#include#include#includevoiderror(char*msg){perror(msg);exit(1);}structsockaddr_increateSockAddr(intportnum){structsockaddr_inaddr;addr.sin_family=AF_INET;addr.sin_addr.s_addr=INADDR_ANY;addr

linux - C Linux tcp 代理服务器套接字

我一直在Linux中进行一些套接字编程,我正在尝试做一个并发代理服务器。基本上我希望每个连接到代理服务器的客户端都会遇到2个问题。第一个是介绍命运的IP,第二个是端口号。发送此信息后,代理服务器会将每个客户端连接到他们选择的IP(即回显服务器)。我的问题是如何以及在哪里保存每个用户回答的2个问题,然后将它们连接到他们选择的回显服务器。这是我认为我们必须处理的代码部分:/*============WARNSTHATSERVERISREADYTOACCEPTREQUESTS==================*/if(listen(sockfd,5)==-1)Abort("Impossib

c - 使用 TCP 与 fortran 进行进程间通信 (IPC)

我正在努力创建一种让多个Fortran进程相互通信的方法。这将用于模拟,其中一台机器正在运行模拟过程,而另一台机器(或可能是机器集群)将为模拟过程生成合成数据。即:模拟进程(sp)向生成进程(gp)请求一条信息。gp要么找到请求的信息,要么创建它并将其返回给sp。这两个过程都非常密集,这就是为什么它们将在多台机器之间拆分。无论如何,在做了一些研究之后,我能为这个IPC想出的最好方法是同时使用TCP和IP。在做了更多研究后,我得出了以下代码(取自here):模块MODULEMSockets!Interfacetolibmsock!AlibraryforTCP/IPclient-serve

C - 填充 TCP 套接字发送缓冲区

我正在尝试编写一个实验性的客户端/服务器程序来证明当发送缓冲区已满时写入是否失败或阻塞。基本上,我在发送程序上有一个无限循环,我使用select()检查我是否可以在缓冲区上写入(我认为这意味着套接字缓冲区未满),如果我可以在缓冲区上写入比我写()一个字符。当FD_ISSET(sockfd,&writefds)为false时,循环中断(我无法写入缓冲区,因为它已满)。接收程序在开始read()之前休眠一分钟。我希望发送者在此休眠时间内填充缓冲区,但事实上,程序永远不会结束。发件人:intmain(intargc,char*argv[]){charbuffer[100];intsockfd

c - 使用 kqueue 的 TCP 服务器 worker

我最近对内核事件进行了一些测试,并得出以下结论:使用内核事件接受套接字是否有意义?我的测试表明我一次只能处理一个接受(即使事件列表数组更大)(对我来说很有意义,因为.ident==sockfd仅适用于一个套接字)。我以为kevent的使用主要是一次从多个套接字读取。是真的吗?这就是TCP服务器通过kqueue实现的方式吗?:监听线程(没有kqueue)接受新连接并将FD添加到工作队列。问题:这有可能吗?我的测试显示是的,但它是否保证工作线程会知道这些变化并且kevent真的是线程安全的?工作线程(使用kqueue)等待读取从监听线程添加的文件描述符。问题:一次检查多少个套接字才有意义?

基于TCP socket的文件上传与下载(服务器、客户端)

一、功能        客户端:        1.将本地文件上传到服务器         2.将服务器端的文件下载到本地        服务器:        1.接收客户端上传的文件并保存         2.将客户端请求下载的文件传输给客户端二、原理        客户端:                1.创建网络通信接口            intsocket(intdomain,inttype,intprotocol);        2.将客户端的IP地址和端口号与socket绑定                        intconnet(intsockfd,const

基于TCP socket的文件上传与下载(服务器、客户端)

一、功能        客户端:        1.将本地文件上传到服务器         2.将服务器端的文件下载到本地        服务器:        1.接收客户端上传的文件并保存         2.将客户端请求下载的文件传输给客户端二、原理        客户端:                1.创建网络通信接口            intsocket(intdomain,inttype,intprotocol);        2.将客户端的IP地址和端口号与socket绑定                        intconnet(intsockfd,const

c - 带接收超时的套接字 : What is wrong with this code?

我正在尝试实现一个接收超时为1秒的套接字:intsockfd;structsockaddr_inself;structsockaddr_inclient_addr;intaddrlen=sizeof(client_addr);ssize_tnBytes;sockfd=socket(AF_INET,SOCK_STREAM,0);self.sin_family=AF_INET;self.sin_port=htons(PORT);self.sin_addr.s_addr=INADDR_ANY;inton=1;setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,
12