TCP/IP网络编程
文章平均质量分 55
windseeker2008
Just for fun
展开
-
根据主机域名获得主机IP
根据域名(或者主机名)获得IPgethostbyname, 涉及到DNS解析#include #include #include #include #include static const char *hostname2 = "baidu.com";int main(int argc, char *argv[]) { struct hostent *host;原创 2014-01-02 21:15:21 · 657 阅读 · 0 评论 -
根据网卡(eth0, eth1)获得对应的IP地址
核心是利用 ioctl函数的SIOCGIFADDR 来获取int get_interface_addr(char *eth, char *ipaddr){ int sock_fd; struct sockaddr_in my_addr; struct ifreq ifr; if ((sock_fd = socket(PF_INET, SOCK_DGRAM, 0)) ==原创 2014-01-16 17:05:20 · 2365 阅读 · 0 评论 -
TCP/IP中的CLOSE_WAIT和TIME_WAIT
在做TCP/IP网络程序时, 经常会遇到一些特殊的TCP连接状态, 比如CLOSE_WAIT, TIME_WAIT, 记录一下, 防止下次又忘记. 这两个状态的出现都与TCP连接的关闭有关。 由于TCP连接的关闭分为主动关闭和被动关闭两种,而CLOSE_WAIT状态出现在连接是被动关闭的情况,即对方关闭了连接。但如果我方收到对方关闭的消息后(如read函数返回0)并没有关闭连接,此时的连接原创 2015-09-02 20:28:41 · 745 阅读 · 0 评论 -
socket的write/send还是是否是线程安全?
在多线程的网络服务器程序中, 对同一个客户端多线程同时发送数据是经常可能发生的事情, 也就是有可能会多线程的对一个fd调用send/write, 那么这种操作是否需要加锁?并发写套接字是否导致系统缓冲区数据混乱呢? 网上搜了下,有人说可以写,有人说不能,linux man page也没有说明。 看来需要写程序测试。 写了个server的代码进行测试。10个线程同时对一个fd进行原创 2016-10-16 21:06:22 · 10800 阅读 · 8 评论