Tag: socket

基于Chrome Socket的XMLHttpRequest

之前在开发 Chrome OS 系统下的快盘文件系统时发现使用 Chrome 自带的 XMLHttpRequest 存在一些限制: 使用 jQuery 实现的 XHR 碰到 HTTP 302 redirect 等特殊的请求时浏览器会自动处理(例如:自动重定向),在 Chrome App 模式下会被限制,如果需要得到重定向的地址就不好实现,此时可以考虑用 Chrome Socket 来实现完整的 HTTP 协议请求。 有关 Chrome Socket 即 chrome.sockets.tcp 的说明可以参考这里: https://developer.chrome.com/apps/sockets […]

使用libc封装库修改程序绑定端口

本文同步自(最佳显示效果请点击):https://zohead.com/archives/libc-bind-wrapper/ 最近在使用一个第三方程序的时候发现程序绑定的 UDP 端口和现有 Linux 系统中的程序有冲突,系统自带的程序又不好修改端口,而第三方程序更没有源码或者配置文件来指定端口。 这种情况下想到可以用 libc 的封装库自己实现 bind 之类的函数来修改端口号,而网上也找到了 Daniel Ryde 类似的实现: http://www.ryde.net/code/bind.c.txt 编译这个 bind 库可以通过环境变量指定绑定的本地 IP 地址,但不支持端口号修改, […]

解决socket在execl之后被自动继承的问题

本文同步自:https://zohead.com/archives/close-socket-after-execl/ Linux下的进程在创建子进程(fork)后,子进程会自动继承父进程的文件描述符,这种机制在没有 execl 运行时一般都没有问题,而且也比较方便在子进程中直接使用父进程中打开的文件描述符,但如果子进程通过 execl 类函数运行新的程序时,这些继承的文件描述符却没有被关闭,导致 execl 之后的程序中也有父进程中文件描述符的拷贝,有些情况就会出现错误。 由于 socket 也在这些文件描述符范围内,本文简单说下解决 socket 被自动继承的几种方法。 首先是测试程序,头 […]