标签: networking

如何查找正在使用我的服务的网络上的任何和所有计算机?

我有一对自定义的客户端/服务器套接字(TJDServerSocket和TJDClientSocket),它们将TServerSocket和TClientSocket包装在ScktComp单元中.我没有任何问题要解决,但想知道一些事情.我想在客户端添加一项功能,以自动搜索网络中任何服务器套接字实例(特别是我的服务器组件).

我对任何建议持开放态度,但必须具体使用Delphi 7中的ScktComp单元.

这是我的组件的链接.

sockets delphi networking winsock delphi-7

0
推荐指数
1
解决办法
1387
查看次数

如何检查TCP发送缓冲区的容量以确保数据传输

我想在我的TCP界面添加发送确认.非阻塞写入可以填充发送缓冲区,但是如果连接失败,数据可能永远不会到达 - 同时写入已报告数据已被接收(由本地套接字).

如果我在堆栈中添加额外的ack,我可以验证收到的每个数据.我认为ftp会这样做.但我不能借用任何人的代码而宁愿不实施ack/resend,特别是因为TCP已经完成了大部分工作.

我认为如果我可以在每次write()之后验证套接字发送缓冲区是否为空,那么可以实现.如果没有更多的数据,它应该已经全部交付.我不介意清空缓冲区的延迟.

编辑:我意识到TCP/socket实现因系统而异,但如果有Berkeley或Linux解决方案,它可能对我有用.

编辑:为了解决一些建议,我想实现三个级别的TCP接口,我不知道如何完成*一个.

  • 对于喜欢危险生活的应用程序,不保证交付的正常TCP.
  • *TCP验证远程主机的接收,即使数据包从未传递到远程应用程序.这降低了我的大部分连接风险(移动客户端),并且可以在客户端完全实现.我认为如果我可以验证套接字传出缓冲区为空,这可以实现.
  • 应用层ACK和重新发送在TCP或UDP之上实现,以便验证端点.

sockets ip networking tcp

0
推荐指数
1
解决办法
5262
查看次数

如何在C编程中更新TTL?

我在ping中添加了一个新函数.我想通过命令行设置TTL,但ping是由ICMP构建的,TTL是在IP中设置的.所以你能告诉我一些解决方法吗?谢谢.

c linux networking

0
推荐指数
1
解决办法
1150
查看次数

PHP验证IP地址

<?php
$subdomain ='hello.cheapantivirus.me';
        $ns1 = 'ns01.000webhost.com';

$host = "@$ns1 $subdomain";
$ip = `/usr/bin/dig $host +short A`;

 echo $ip; // output is 31.170.161.67

 $ip3 = '84.8.161.5';

 if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
   echo "valid"; 
}
else {
  echo " not valid"; // the $ip is invalid
}


 if(filter_var($ip3, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
   echo "valid"; // somehow this one is valid
}
else {
  echo " not valid";
}
?>
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么$ ip filter被显示为无效但$ ip3当我手动分配IP时,$ ip3过滤器显示为有效.请帮帮我?

php ip networking ipv4 filter-var

0
推荐指数
1
解决办法
2882
查看次数

Android:如果通过WiFi连接手机,则无法从网络获取地理位置

我正试图从网络中获取地理定位:

boolean network_enabled = false;
LocationManager lm;
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

try{
   network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch(Exception ex){
   Log.v("my_log_tag", "network location exception: " + ex.toString());
}

if(network_enabled){
   lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);
}
Run Code Online (Sandbox Code Playgroud)

如果我的手机只通过手机网络连接,它的效果很好,但我有一个问题:如果我的手机不仅通过手机网络连接,而且连接到某些WiFi接入点(比如我的家庭接入点),那么我收到的不是地点.似乎Android尝试使用我的WiFi接入点获取地理位置,但当然不能.如何让Android从手机网络获取位置并忽略任何WiFi连接?

我当然知道这是可能的,因为,例如,Yandex Maps应用程序做得很好.

我需要再说一个细节:即使我没有启用复选框设置 - > 位置和安全性 - > 使用无线网络,此Yandex地图应用程序也可以通过网络接收地理位置.我不知道它是如何工作的,但也许它使用完全不同的方法.

事实是:如果我启用了GPS,它会使用GPS.如果我禁用了GPS,但启用了蜂窝网络连接,则它使用网络进行地理定位,独立于WiFi连接和复选框" 使用无线网络 ".

我怎么能这样做?

谢谢.

networking android geolocation

0
推荐指数
1
解决办法
2123
查看次数

使用C#ping服务器

我试图使用Ping类ping服务器,但是在10次之后该方法返回true,我一直得到假(这意味着服务器已关闭[?]而它不是)以下是方法:

     public bool IsConnectedToInternet()
    {
            Ping p = new Ping();
            try
            {

                PingReply reply = p.Send("www.uic.co.il", 1000);
                if (reply.Status == IPStatus.Success)
                    return true;
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());    
            }
            return false;
    }

    private void start_Click(object sender, EventArgs e)
    {
        for (; ; )
        {
            Console.WriteLine(IsConnectedToInternet);


        }
    }
Run Code Online (Sandbox Code Playgroud)

为什么我会在一段时间后变得虚假?谢谢.

c# networking network-programming

0
推荐指数
1
解决办法
6354
查看次数

是否有任何端口可用于广播到每个进程?

我想向所有进程广播UDP消息。就像255.255.255.255用于广播到所有ip一样,是否有任何端口可以广播到每个进程?

c++ linux networking udp

0
推荐指数
1
解决办法
294
查看次数

Java ByteBuffer"put"方法 - 防止缓冲区溢出

我想以下列方式使用java nio ByteBuffer的put方法:

ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
ByteBuffer big = getAllData();

while (big.hasRemaining()){
    small.put(big);
    send(small);
}
Run Code Online (Sandbox Code Playgroud)

put方法会抛出缓冲区溢出异常,所以我要修复的是:

 ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
 ByteBuffer big = getAllData();

 while (big.hasRemaining()){
     while (small.hasRemaining() && big.hasRemaining()){
         small.put(big.get());
     }

     send(small);
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 有更好的方法这样做,或者至少有效的方式来做我想要的吗?

java networking nio bytebuffer

0
推荐指数
1
解决办法
2818
查看次数

分析Python代码:模数运算符

我在看Python中的一些代码(我对Python一无所知),我遇到了这个部分:

def do_req(body):
    global host, req
    data = ""
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, 80))
    s.sendall(req % (len(body), body))
    tmpdata = s.recv(8192)
    while len(tmpdata) > 0:
        data += tmpdata
        tmpdata = s.recv(8192)
    s.close()
    return data
Run Code Online (Sandbox Code Playgroud)

然后稍后使用大尺寸的主体调用它,超过500,000字节.这将发送到Apache服务器,该服务器的最大请求大小为默认的8190字节.

我的问题是" s.sendall()"部分发生了什么?显然整个身体不能立即发送,我猜它是通过模数运算符减少的.不过,我不知道它在Python中是如何工作的.谁能解释一下?谢谢.

python networking

0
推荐指数
1
解决办法
233
查看次数

无法连接到远程服务器

我无法连接到远程SQL Server.

我做了以下事情:

  1. 启用TCP/IP协议

  2. 关闭了防火墙

  3. 启动SQL Server Browser服务.

但我仍然无法连接到服务器

服务器名称: - ip\SQLSERVER
用户 - 用户名
密码 - PWd

sql-server networking remote-access

0
推荐指数
1
解决办法
8389
查看次数