我正在使用实用程序穿梭在我的电脑上访问互联网。
sudo sshuttle --dns -vr user@172.16.30.30 0/0
我有一个简单的java客户端服务器程序。
客户端(我的计算机运行穿梭)
// client ip is 172.16.23.6
class client {
public static void main(String args[]) {
Socket s = new Socket("172.16.30.20",port); // different server
}
}
服务器程序,运行在172.16.30.20上
我正在编写一个bash脚本,它经常读取循环中的一个文件夹,以便在规定的时间间隔内将数据发送到服务器。我使用netcat作为连接服务器和发送数据的工具。我的伪代码看起来应该是:
while true
do
read_folder()
process_data() > result.txt
cat result.txt > netcat ip port
wait 10 sec
done
我唯一的问题是,在这种情况下,客户端每次都会连接和断开到服务器的TCP/IP连接。我倾向于在脚本开始时建立连接,并在结束时关闭它。
是否可以通过bash脚本中的命令行工具
我的假设是,当TCP连接处于已建立状态时,服务器可以从套接字中读写。但是我看到,当TCP连接处于CLOSE_WAIT状态时,服务器实际上可以从套接字中读取和写入套接字。当客户端关闭连接时会发生这种情况,但是服务器还没有检测到/处理流结束的情况。
例如。同步、阻塞的单线程服务器:
#include <unistd.h>
#include <netdb.h>
#include <signal.h>
int main (void)
{
signal(SIGPIPE, SIG_IGN); // ignore SIGPIPE from last send()