我试图用perl (Windows,x64)编写多线程服务器。当我试图从另一台计算机连接到它时,我发现内存和句柄使用率一直在上升,即使我一次只维护了一个连接。经过数千次试验,它消耗了几乎所有的系统内存。我搞不懂原因。
以下是服务器端:
use IO::Socket::INET;
use threads;
sub session_thread
{
my $client_socket=$_[0];
my $client_address = $client_socket->peerhost();
my $client_port = $client_socket-&g
我有一个多线程Java web服务器,它可以接受客户端的请求。
RAM中的每个请求都为此请求分配内存,但在套接字关闭后未清除。只有在重新启动web服务器之后才会进行清理。
如果是内存泄漏,那么代码的哪一部分会发生?
我的代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
public static void main(String[] args) {
try (ServerSocket server = new
我正在尝试用C++制作Linux tcp服务器应用程序。我对每个客户端使用线程,并在线程中使用来自客户端套接字的recv数据,但在recv上得到sigabrt。 我尝试将buffer改为memset,但失败了。然后,我尝试从线程外部创建缓冲区,但也失败了。首先,我认为recv函数是一个问题,但是memset和简单的内存更改,如buffer = 0;也会变得奇怪。 void TcpServer::connectAction()
{
while (is_started) {
// Listen new connection from socket
if (
我的申请有问题。我正在构建一个基于客户机/服务器的应用程序。但是,当我执行这一行代码时,我的控制台就会关闭:
response = Console.ReadLine();
我的完整代码:
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace Server
{
class Program
{
private static byte[] _buffer =
Socket.BeginSend、Socket.BeginReceive、Socket.BeginAccept等的线程创建逻辑是如何工作的?
是为连接到我的服务器以处理代码的每个客户端创建一个新线程,还是只为每个函数创建一个线程(接受、接收、发送.)不管有多少客户端连接到服务器?这样,在客户端1接受代码完成后,只执行客户端2接受代码,依此类推。
这是我编写的代码,我试图更好地理解它背后的逻辑:
public class SocketServer
{
Socket _serverSocket;
List<Socket> _clientSocket = new List
我正在Linux上编写一个C程序,其中我有一个main()和两个由它创建的线程。在其中一个p线程中,我调用了accept()函数。
我有一个信号处理程序,它在接收到SIGINT、SIGQUIT或SIGTERM时被调用。
我的期望是,因为我正在使SA_RESTART标志为零,当我按ctrl-c时,accept()函数应该返回EINTR而不是重新启动,但是我在调试过程中通过一系列printf调用(通过打印代码所在的位置来查看执行哪些行)认识到,即使我的应用程序能够捕获SIGINT,接受函数仍然被阻塞,它在EINTR中没有失败,也没有移动到下一行代码。以下是main()内部的设置
struct si
我已经创建了一个包含QTcpServer的线程,它接受任何传入的连接:
void Service::run() //Service class is a subclass of QThread
{
server->listen(QHostAddress::LocalHost, ServicePortNo);
// server is a private member of Service
while(server->waitForNewConnection(-1)){
QTcpSocket *socket = server->
我使用套接字编写了Python脚本。我写了一个基本的聊天,但它有一个问题,我不知道如何使用Threading库以及如何使客户端工作不阻塞。我试过使用While,但它说:
thread.error:无法启动新线程
这是客户端代码:
import socket
import threading
my_socket = socket.socket()
my_socket = socket.socket()
my_socket.connect(('127.0.0.1', 23))
print('Welcome to the chat room . You can se
我正在尝试实现客户端到客户端的聊天,它通过服务器。
但是它给了我并发执行异常。
任何建议都将不胜感激。
我设法写的源代码:
下面的是我的服务器程序:
public class Server {
int port;
ServerSocket server=null;
Socket socket=null;
ExecutorService exec = null;
ArrayList clients = new ArrayList();
DataOutputStream dos=null;
public static void main(
我正在尝试使用多线程为多个套接字建立连接 这是代码 import socket as sc if __name__ == '__main__':
#setup()
ports = [10000, 10010, 10020, 10030]
init_sockets()
init_threads() def init_sockets():
global host_ip
global sockets
host_ip = sc.gethostname()
sockets = []
for port i
我有一个客户端-服务器应用程序。它在客户端打开一个套接字,然后我输入数据发送,它也被发送到其他客户端,但随后套接字关闭。为什么?我尝试了许多不同的方法,比如将din和dout转移到线程本身,添加一些处理程序,等等,但还没有进展。
我看到了其他一些类似的问题,但那里的解决方案并不适用于我的问题(我在套接字方面没有太多经验)。想要一个解决我的具体问题的方法。
错误:
java.net.SocketException: Socket is closed
at java.base/java.net.Socket.getInputStream(Socket.java:927)
at co
我使用客户端通过python中的UDP连接套接字。我有两根线。在KeyboardInterrupt之后,第一个线程仍然在通过recvfrom等待连接。
(...)
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
(...)
udp.shutdown(socket.SHUT_RDWR) # Does not work
udp.close() # Does not work
我有一个所有线程共享的全局变量,我在KeyboardInterrupt之后更新这个值。但线并没有关闭。
我如何退出这个线程?
提前谢谢。
我正在尝试为全局聊天创建一个简单的客户机-服务器应用程序,当从客户端退出连接时,我会收到以下错误。
java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:203)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.net.SocketInputStream.read(SocketInputStream.java:223)
at java.io.DataInputS
我有一个带有主线程的类
public class MainThread extends Thread
{
private final Socket s;
public MainThread(final Socket s)
{
this.s = s;
}
public void start()
{ // some logic
}
}
和具有线程池的类
public final class MainListener extends Thread
{
private Socket ss;
public MainListener(f
我正在使用Socket编写一个Java项目。由于套接字方法是阻塞方法,所以我不得不创建一个多线程应用程序。
到目前为止,我能够从其他应用程序读取传入的字节。我把它们写进StringBuilder。我的问题是如何将这个字符串返回到我的主线程。我在想一些类似事件的事情,一旦套接字线程读完,我就可以调用它。
我对任何想法都很高兴。
public class SocketRunnable implements Runnable {
private final Socket _socket;
public SocketRunnable(Socket socket){
this._socke