如何通过gdb来发送socket信息

发布于 2022-01-05 07:45:17 字数 1914 浏览 665 评论 6

想模拟一下这种场景

socket client ==> socket server : 10011

当client ip变化的时候的这个socket的表现 (办公网络 无固定公网IP IP会时不时的变化)

实现步骤:

1. ssh socket server 执行如下命令 创建了一个Socket服务端 往客户端发送信息

# nc -lkp 10011
s1
s2
s3
...

2. Java Socket客户端不停地读取服务端的输出

此时服务端执行lsof 可知客户端的公网IP是114.246.74.218

# lsof -i:10011
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
nc      28060 root    3u  IPv6 224375986      0t0  TCP *:10011 (LISTEN)
nc      28060 root    4u  IPv4 224375987      0t0  TCP *:10011 (LISTEN)
nc      28060 root    5u  IPv4 224376807      0t0  TCP izuf6cj2o216xpzfzh1rioz:10011->114.246.74.218:60957 (ESTABLISHED)

3. 打开VPN 模拟公网IP地址变化

Your IP: 45.62.52.37

本来想着Socket server 继续往客户端发送信息 看看此时客户端能不能成功接收到服务端发来的信息 即验证之前的Socket还有没有效

没想到打开VPN之后 服务端就断掉了 没法继续发送消息

packet_write_wait: Connection to 139.224.xxx.xx port 22: Broken pipe 

重新ssh登录到服务器上 想着如何继续利用已存在的Socket继续发送信息

nc      28060 root    5u  IPv4 224376807      0t0  TCP izuf6cj2o216xpzfzh1rioz:10011->114.246.74.218:60957 (ESTABLISHED)

执行下面的命令 不行

# nc -lkp 10011
Ncat: bind to :::10011: Address already in use. QUITTING.

于是想通过gdb来发送信息  即直接调用系统命令来发送

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

但是不知道该怎么发送

# gdb -p 28060
# send("s4")
# send("s5")
# send("s6")

(gdb)send(5, buf, len, flags )

 

 

 

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

温柔少女心 2022-01-08 05:58:51

对 就是想用gdb 来调试发送 接收 socket信息

浮生未歇 2022-01-08 05:58:23

回复
@zgw06629 : 菜鸡不知道gdb还有这么高级的用法,打扰了

秋意浓 2022-01-08 04:49:28

gdb 不是用来调试的吗  

如日中天 2022-01-08 04:34:58

是这样 想模拟公网IP变了 先前的Socket是一个什么状态 还不能正常接收 这不使用nc直接启动Socket服务端简单吗 这不IP一变 ssh就退出了 再次ssh登录的时候 lsof看到nc进程还在 即先前的Socket还在 但是此时没办法通过nc交互终端往客户端发送信息了 所以也不知道此时这个客户端还能不能接收服务端的信息 于是想到能否直接在服务务端通过系统命令发送Socket信息给客户端吗

冷清清 2022-01-07 23:16:24

回复
@zgw06629 : ip变了socket肯定不能接收ip报文了,你看到socket状态还在,那只是操作系统还没回收socket,进程没释放socket,但它肯定无法接收变了的ip了,这需要测试吗?最基本的常识啊~~

狠疯拽 2022-01-06 04:09:27

不明白为什么非要这样瞎折腾

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文