标签: sockets

使用Tcp套接字时抛出了System.OutOfMemoryException'

我正在使用Tphone协议进行远程服务,使用Tcp协议进行窗口应用程序的Socket编程.我们用了 int BufferSize = 999900000.

当一对一客户端相互连接进行聊天时,它运行正常.但在发送大约35条消息后,我收到错误:

"客户端添加了函数调用catch抛出类型'System.OutOfMemoryException'的抛出."

我们如何解决这个问题?

这是一个严重的错误,因为exe没有因为这种错误而发送任何响应.

c# sockets

-1
推荐指数
1
解决办法
779
查看次数

扭曲:将数据写入同一套接字后,如何从客户端套接字读取?

我正在尝试编写一个扭曲的简单TCP服务器,该服务器必须按顺序执行以下操作:

  1. 客户端连接到服务器,并且KEEPALIVE该连接的标志设置为1。
  2. 服务器从客户端接收数据。
  3. 然后,它计算出一个列表响应。
  4. 然后,服务器在等待客户端之间的显式ACK的同时,依次发送列表中的每个项目,即,从列表中发送单个项目之后,服务器仅在接收到ACK之后,才等待客户端的ACK数据包。是否以相同的方式继续发送其余项目。

以下是代码:

class MyFactory(ServerFactory):
    protocol = MyProtocol

    def __init__(self, service):
        self.service = service

class MyProtocol(Protocol):

    def connectionMade(self):
         try:
             self.transport.setTcpKeepAlive(1)
         except AttributeError: 
             pass
         self.deferred = Deferred()
         self.deferred.addCallback(self.factory.service.compute_response)
         self.deferred.addCallback(self.send_response)

    def dataReceived(self, data):
         self.fire(data)

    def fire(self, data):
        if self.deferred is not None:
            d, self.deferred = self.deferred, None
            d.callback(data)

    def send_response(self, data):
        for item in data:
            d = Deferred()
            d.addCallback(self.transport.write)
            d.addCallback(self.wait_for_ack)
            d.callback(item)
        return   

    def wait_for_ack(self, dummy):
        try:
            self.transport.socket.recv(1024)
        except socket.error as e:
            print e
        return
Run Code Online (Sandbox Code Playgroud)

在运行服务器和客户端时,出现以下异常:

Resource temporarily …

python sockets tcp twisted twisted.internet

-1
推荐指数
1
解决办法
1667
查看次数

套接字accept()后无法获取返回值

我有一个客户端/服务器程序.客户运行良好.但是当客户端收到10060错误时,服务器似乎停留在accept()并且无法获得返回值.我怎样才能解决这个问题?我需要accept()来返回错误,以便服务器可以继续做其他事情.

客户代码:

SOCKET sock, sendrecv;  
sendrecv = myInitClientSocket(szIP, 6666);
if ( sendrecv ==0 ){  //socket 10060 error so that myInitClientSocket returns 0
    int err= WSAGetLastError();
    shutdown(sendrecv, 0x02);
    closesocket(sendrecv);
    return 0;
}       
Run Code Online (Sandbox Code Playgroud)

服务器代码:

SOCKET sock, sendrecv;
struct sockaddr_in sock_addr,sendrecv_addr;
WSADATA data;
WORD p;
p=MAKEWORD(2,2);
int resStartup = WSAStartup(p,&data);
sock = WSASocket (AF_INET, SOCK_STREAM, 0, 0, 0, 0);
int nREUSEADDR = 1;
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const char*)&nREUSEADDR,sizeof(int)); 

sock_addr.sin_family=PF_INET;
sock_addr.sin_port=htons(6666);         
sock_addr.sin_addr.s_addr=INADDR_ANY;
int resBind =   bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in));
int resListen =listen(sock, 5); 
int lun = sizeof (struct …
Run Code Online (Sandbox Code Playgroud)

c sockets windows

-1
推荐指数
1
解决办法
456
查看次数

c#中通过socket的客户端服务器连接

我正在尝试使用c#中的套接字建立客户端和服务器异步连接.事实上我已经下载了客户端服务器的示例.我正在徘徊那条线:IPHostEntry ipHostInfo = Dns.GetHostEntry("host.contoso.com");在IPhostEntry服务器和客户端的情况下我想要检索什么?该行是否应该返回每个设备(服务器或客户端)的主机,IP和端口?

编辑: 我在host.contoso.com的位置复制已运行的服务器的IP,并收到以下消息:使用了与请求的协议不兼容的地址.

编辑:我实际上添加, IPHostEntry ipHostInfo = Dns.GetHostEntry("127.0.0.1:11000");我收到没有这样的主机是众所周知的.

c# sockets

-1
推荐指数
1
解决办法
1244
查看次数

为什么python套接字不能解析带有http的url

我的脚本基本上看起来像这样

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('http://goal.com', 80))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,像这样

Traceback (most recent call last):
  File "/home/danidee/PycharmProjects/b&h/dang.py", line 4, in <module>
    s.connect(('http://goal.com', 80))
socket.gaierror: [Errno -2] Name or service not known
Run Code Online (Sandbox Code Playgroud)

这意味着python无法解析该特定主机,

如果我删除http://并保留它goal.com或通过我的浏览器发出请求,它就没事了,脚本和浏览器不会抛出任何错误,stackoverflow上的答案之一建议删除代理我已经完成但错误没有从我试过的终端开始走了

host http://goal.com
Run Code Online (Sandbox Code Playgroud)

但它也没有解决,我猜这是我的系统配置,但我无法弄明白我已经调查过/etc/hosts,但我没有看到任何奇怪的东西.

我知道我可以做到没有http://但我想知道为什么它不会那样工作,而且如果我想指定另一个协议,如果httpsftp

对于ftp我已经看过代码,ftp.goal.com例如,它似乎工作正常,但我尝试了http,它仍然失败.

python sockets linux http python-3.x

-1
推荐指数
2
解决办法
1553
查看次数

TCP套接字超时或无数据读取

如何识别套接字是否已超时或没有其他数据?

我有这个:

setsockopt(cli_socket, SOL_SOCKET, SO_RCVTIMEO, (struct timeval *)&tv, sizeof(struct timeval));  //5 sec timeout
while(1)
{
  l = recv(socket, ...);
  if(l < 0)
    break;
}
Run Code Online (Sandbox Code Playgroud)

之后我检查EWOULDBLOCKEAGAIN设置,但即使超时没有发生,他们被设置.我需要执行不同的操作,具体取决于连接时间是否成功或者我是否已成功阅读

c sockets

-1
推荐指数
1
解决办法
590
查看次数

内置函数 bzero 的不兼容隐式声明

我是 c 编程的新手,我目前正在尝试理解网络编程的概念。我试图在 Kali linux(基于 Debian 的 linux 系统)上运行一个简单的服务器代码,但是有很多我无法调试的错误。请看看我的代码。

代码 :

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <time.h>
#include <stdlib.h>


#define SA  struct sockaddr
#define MAXLINE 4096

int main(int argc,int **argv)
{
    int roockfd,confd;
    socklen_t len;
    struct sockaddr_in servaddr,cliaddr;
    char buff[MAXLINE];
    time_t ticks;

    roockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(13);
    servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

    Bind(roockfd,(SA*)&servaddr,sizeof(servaddr));

    Listen(roockfd,5);

    for(; ;)            
    {
        len=sizeof(cliaddr);

        confd= Accept(roockfd,(SA*)&cliaddr,&len);
        printf("Connection from %s, port %d\n",
            Inet_ntop(AF_INET,&cliaddr.sin_addr,buff,sizeof(buff)),
            ntohs(cliaddr.sin_port));

        ticks=time(NULL);
        snprintf(buff,sizeof(buff),"%.24s\r\n", ctime(ticks));
        printf(confd,buff,strlen(buff));
        close(confd);
    }
}
Run Code Online (Sandbox Code Playgroud)

等待您的宝贵答复。

c sockets linux

-1
推荐指数
1
解决办法
1万
查看次数

Linux中的套接字连接

我刚从linux中的connect API收到错误.

我知道如果连接成功,'connect'将返回零,我得到返回值"3"

是错误代码吗?或者还有什么不知道的东西?

connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
Run Code Online (Sandbox Code Playgroud)

我从袜子里得到了价值3.

c sockets linux

-1
推荐指数
1
解决办法
80
查看次数

当客户端未将数据发送到服务器但客户端断开发送到服务器的数据时,连接成功

在这里我放了一些代码,连接建立,但是每当客户端想要将一些数据发送到服务器数据时,如果客户端在到达服务器后立即解除连接数据如何解决该问题.

我想要的是:如果建立连接并且连接不紧密.

public class Server extends AppCompatActivity {

private ServerSocket serverSocket;
Handler UIHandler;
Thread Thread1 = null;
EditText edText;
public static final int SERVERPORT = 3000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_server);
    getSupportActionBar().setTitle("Server");
    edText = (EditText) findViewById(R.id.editText);
    UIHandler = new Handler();
    this.Thread1 = new Thread(new Thread1());
    this.Thread1.start();

}

class Thread1 implements Runnable {
    InetAddress addr;

    @Override
    public void run() {
        Socket socket = null;
        try {
            addr = InetAddress.getByName(getLocalIpAddress());
            serverSocket = new ServerSocket(SERVERPORT);
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

java sockets android serversocket

-1
推荐指数
1
解决办法
191
查看次数

C++ Linux使用char绑定套接字[14]

我是C++的新手,所以这个问题绝对是愚蠢的.

在socket编程的linux文档中,我发现了这个:

 struct sockaddr {
       a_family_t sa_family;
       char       sa_data[14];

 };
Run Code Online (Sandbox Code Playgroud)

但是,当我写sockaddr address = {AF_INET, strAddress}; GCC时返回错误:

必须使用大括号括起初始化程序初始化数组

我不明白的是,如果我写的话

sockaddr address = {AF_INET, "AN_AARRAY_OF_CHAR"};
Run Code Online (Sandbox Code Playgroud)

,它的工作原理并没有返回错误.

那么"THIS ARRAY",和之间的区别是什么char test[]="THIS ARRAY"

我怎样才能解决它返回的错误?

c++ sockets linux

-1
推荐指数
1
解决办法
69
查看次数

标签 统计

sockets ×10

c ×4

linux ×4

c# ×2

python ×2

android ×1

c++ ×1

http ×1

java ×1

python-3.x ×1

serversocket ×1

tcp ×1

twisted ×1

twisted.internet ×1

windows ×1