- 博客(10)
- 收藏
- 关注
原创 linux下多线程实现服务端
并发服务端有多线程的和多进程的,今天来看一下多线程的。线程编程可能会麻烦一点,其中涉及到一些同步,死锁问题,但是也有其优点。并发服务端用的多的还是多进程。服务端:#include#include#include#include#include#include#include#include#include#includevoid *server_handle(voi
2017-12-28 16:03:00 9880 1
原创 windows下带超时的telnet探测IP和端口
玩树莓派由于没有屏幕,IP可能会跳,这时就不知道自己的树莓派是哪个IP了,下面可以用这个程序去探测自己树莓派的IP。其主要思想是:非阻塞的带超时的connect函数。#include #include #pragma comment(lib, "ws2_32.lib") int telnet_test_tcp(char *ip,int port,int timeout
2017-12-21 09:07:45 3039 3
原创 getservbyname和getservbyport
getservbyname函数和getservbyport函数其实也挺简单的。来看看百度百科是怎么描述他们的。getservbyname()返回与给定服务名对应的包含名字和服务号信息的servent结构指针;getservbyport()函数返回对应于给定端口号和协议名的相关服务信息,再来看看servent结构体。struct servent {char * s_name;char *
2017-12-14 19:25:36 1873 2
原创 UDP调用connect函数
UDP是无连接的,在发送数据时需要指定对端的IP地址和端口,每次发送数据需要重新连接,而且异步错误不会返回到UDP套接字。这些在UDP调用connect函数之后都发生了改变。代码如下:服务端:#include #include #include #include #include #include #include #include #include #include
2017-12-12 21:09:40 10029 3
原创 sendto成功返回
sendto用于UDP发送数据,send用于TCP发送数据.我们知道TCP中的send成功返回表示应用进程已成功将数据写入发送缓冲区,不表示数据已成功到达对端。而对于sendto成功返回,也只是表明接口输出队列中具有存放所形成IP数据包的空间,UDP是没有发送缓冲区的。来看一段代码:#include #include #include #include #include #inclu
2017-12-12 14:21:49 20168 3
原创 套接字选项SO_LINGER
在说明套接字选项SO_LINGER之前,我们来先看一个问题。如果发送缓冲区中还有数据没有发送到对方协议栈,此时close发送端的socket会发生什么,下面代码给出答案。服务端:#include #include #include #include #include #include #include #include #include #include #includ
2017-12-11 20:07:29 11196 2
原创 套接字选项SO_KEEPALIVE
套接字选项SO_KEEPALIVE是保活套接字,它会在规定的时间内给对端发送探测分节,用tcpdump抓包可以看到。这个规定的时间就是net.ipv4.tcp_keepalive_time,在系统中可以动态的设置它,它的默认值是7200s。SO_KEEPLIVE选项由setsockopt函数进行设置。服务端:#include #include #include #include #
2017-12-08 14:44:58 11009 4
原创 accept函数与TCP三次握手
accept函数和TCP三次握手有没有关系?有什么关系?一段代码让你从此不在疑惑。服务端:#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2017-12-06 15:34:39 15499 2
原创 accept获取对端IP地址,getsockname获取本端IP地址
getpeername函数用于获取与某个套接字关联的外地地址,accept函数在接收连接的时候也会获取对端的地址。getsockname用于获取本端的地址。看代码。服务端:#include #include #include #include #include #include #include #include #include #include #include
2017-12-06 15:17:02 6385 3
原创 gethostbyname函数
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构的指针,它是协议相关的,只能用于IPv4。getaddrinfo也有类似功能,但是它是协议相关的,先看看hostent结构体。struct hostent{ char *h_name; //主机名 char **h_aliases; //主机别名(指向到虚拟主机的
2017-12-01 16:57:03 11265 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人