linux socket的使用问题,请教

奋斗的蜗牛2013 2011-02-10 10:06:32
加精
在linux中一个程序如何通过另外一个程序建立的socket发送接收数据,类似于钩子之类的。谢谢大家。
...全文
2135 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
dungeonsnd 2011-07-04
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 justkk 的回复:]

lz看看unix环境高级编程中,高级IPC,描述符传递一节吧
[/Quote]


qqrilxk 2011-05-23
  • 打赏
  • 举报
回复
楼主可以通过描述符传递来解决这个问题。即A进程创建socket,然后将此socket传递给B进程,(A,B两进程在同一台主机,可不互为父子进程),B进程接收到socket描述符后就可用此描述符来发送消息。详细参考实例见 http://fossd.net/forum.php?mod=viewthread&tid=598&extra=page%3D1 或博客:zgq.cublog.cn
xhuacmer 2011-02-21
  • 打赏
  • 举报
回复
Linux下的该种方法学习!
sharco 2011-02-20
  • 打赏
  • 举报
回复
楼主是要截包转发吗
xiaogang19880817 2011-02-20
  • 打赏
  • 举报
回复
进程内直接可用,进程间需要通过IPC
秦剑 2011-02-19
  • 打赏
  • 举报
回复
A程序是自己控制的还是别人的程序,不能再修改?
ycggyw1 2011-02-19
  • 打赏
  • 举报
回复
留爪,控件有啥接口,怎么用呢?
zhoubing0206 2011-02-18
  • 打赏
  • 举报
回复
进程内直接可用,进程间需要通过IPC, 这个是基本的概念。
小饕 2011-02-17
  • 打赏
  • 举报
回复
linux域套接字,可以传递描述符
小饕 2011-02-17
  • 打赏
  • 举报
回复
可以用linux域套接字,这样可以防止用tcp连接时被黑客利用
int soketpair
具体见《APUE》
wnx_u 2011-02-17
  • 打赏
  • 举报
回复
你的意思是不是相当于数据拦截和重发啊,如果是可以用原始套接字试试
efengyu 2011-02-17
  • 打赏
  • 举报
回复
不好意思,说错了,可以用描述符传递
efengyu 2011-02-17
  • 打赏
  • 举报
回复
通过共享内存,父子进程可以用同一个描述符。
memorymyann 2011-02-16
  • 打赏
  • 举报
回复
一个进程想通过另一个进程的socket传输数据,如果2个进程没有任何关系只能通过IPC,如果是父子进程,可以将socket资源直接传递给子进程。
zdyiamdd 2011-02-16
  • 打赏
  • 举报
回复
通过fork之后那个socket文件描述表就在两个进程之间存在两个引用,你就可以直接用那个了,不过就是可能要改程序结构,实在是麻烦了点
hpyyang 2011-02-15
  • 打赏
  • 举报
回复
fork()函数产生子进程能使用相对的SOCKET,或者通过共享内存,信号,消息等方式通知来处理
pylonxzealot 2011-02-15
  • 打赏
  • 举报
回复
我的经验:
socket 描述符号是依附于进程的, 不能在进程之间传递,但是可以在线程之间共享.
进程只有一种情况可以共享或传递socket描述符. 主进程申请描述符号, fork后,子进程可以使用这个socket.
---
二个完全不相干的进程, 我目前还没有找到方法能够传递socket描述符. (就是如LZ说的, 一个进程建立一个socket连接, 通过方法传递给另外一个进程使用).
xiliuhu 2011-02-15
  • 打赏
  • 举报
回复
这两个程序之间建立一个socket的长连接
czl21 2011-02-14
  • 打赏
  • 举报
回复
以前看过一个win32做的补丁是类似的实现,不过是在同一个进程下的,不在同一进程下的话,怎么取到socket函数的内存地址就是个问题了。

1) 读取socket函数机器码在内存开始位置10个字节。
2. 在原开始地址处写入跳转语句。跳转到你的函数。还可以加入一些控制语句,比如让原socket函数直接返回。
3. 执行读出的机器码后,跳回原socket函数。
  • 打赏
  • 举报
回复
有源代码,就是A B两个程序,谢谢大家支持啊。我比较菜,很多东西不明白。IPC是一种方式,但是这样就存在了数据的转移,我想直接在A程序使用B程序中建立的socket,不想让B程序发送数据。
加载更多回复(29)

23,124

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧