在编程的时候需要加上对应pthread开头的头文件,gcc编译的时候需要加了-lpthread选项 第三个参数是线程的入口参数,函数的参数是void*,返回值是void*,第四个参数传递给线程函数的参数 如果创建线程失败,返回值是一个错误码,错误码通过返回值返回,我们要进行错误检查就检查函数的返回值 函数简介 pthread_create是UNIX环境创建线程函数 头文件 #include<pthread.h> 函数声明 int pthread_create(pthread_t *restri…
from http://blog.csdn.net/feiyinzilgd/article/details/5894300 Linux网络编程中,socket的选项很多.其中几个比较重要的选项有:SO_LINGER(仅仅适用于TCP,SCTP), SO_REUSEADDR. SO_LINGER 在默认情况下,当调用close关闭socke的使用,close会立即返回,但是,如果send buffer中还有数据,系统会试着先把send buffer中的数据发送出去,然后close才返回. SO_L…
基于TCP流协议的socket网络文件传输Demo: 实现:C语言功能:文件传输(可以传任何格式的文件) /*************************************************************************        > File Name: Server.c        > Author: SongLee        > E-mail: lisong.shine@qq.com         > Created Time:…
一.概念介绍 网络程序分为服务端程序和客户端程序.服务端即提供服务的一方,客户端为请求服务的一方.但实际情况是有些程序的客户端.服务器端角色不是这么明显,即互为Linux培训 客户端和服务端. 我们编写网络程序时,一般是基于TCP协议或者UDP协议进行网络通信的.兄弟连Linux培训小编整理: TCP:(Transfer Control Protocol)传输控制协议是一种面向连接的协议,当我们的网络程序使用这个协议的时候,网络可以保证我们的客户端和服务端之间的传输是可靠的. UDP:(User…
(1) 通用socket地址 socket网络编程接口中表示socket地址的是结构体sockaddr,其定义如下: #include<bits/socket.h> struct sockaddr { sa_family_t sa_family; char sa_data[14]; } (2)新的通用socket地址结构体 #include<bits/socket.h> struct sockaddr_storage { sa_family_t sa_family; unsigne…
以下载链接"http://www.boa.org/boa-0.94.13.tar.gz"为例: 断点续传实验大概步骤: ===================== 1,使用gethostbyname()获取站点"www.boa.org"的IP地址 2,以"boa-0.94.13.tar.gz"为例,构建HTTP请求报文首部: char *httpreq = "GET /boa-0.94.13.tar.gz HTTP/1.1\r\n&qu…
1.socket的核心思想是,作为服务器间的进程间通信的最底层的实现,常用的大部分网络协议都是基于socket实现. 2.socket 是如何与最终的低层收发包建立联系的? 3.socket 是如何与VFS建立关系的? 4.TIPC与socket的关系. 5.Socket与EPOLL之间的关系 因为对于服务器端程序而言,可以同时接受很多客户端的socket连接,那么,必须实现并行处理的机制,常用的方法是多进程,也就是说,服务器端的socket一旦建立连接后,立即生成一个新的进程与客户端之间进行后…
socket错误码: EINTR: 阻塞的操作被取消阻塞的调用打断.如设置了发送接收超时,就会遇到这种错误. 只能针对阻塞模式的socket.读,写阻塞的socket时,-1返回,错误号为INTR.另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续.如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束. ETIMEOUT: .操作超时.一般设置了发送接收超时,遇到网络繁忙的情况,就会遇到这种错误. .服务器做了读数据做了超…
当客户端调用close函数的时候,服务器的read函数读到的数据是0读到文件结束通知,表示对端关闭了tcp连接 我们现实实现下面的功能: 1.tcp客户端从标准的输入流中得到输入数据发送到服务器,服务器收到数据之后,不做任何改变,将书法返回给客户端,客户端收到服务器的数据之后,在标准输出流中输出 上面代码中PF_INET和AF_INET都是一样的都是代码tcp的协议族 tcp协议对应的流式套接字,所以写成sock_STREAM 第三个参数可以写成IPPPOTO_TCP或者0都是可以的 第四个结构…
滑动窗口(sliding window) 滑动窗口是用于流量控制的,发送端根据接收端的处理能力发送数据,不至于造成过多的丢包. 是发送方和接收方间的协调,对方的接收窗口大小就是自己的发送窗口大小. 在TCP头中有一个字段window,这个字段就是接收端告诉发送端自己还有多少缓冲区可以接收数据.发送端根据这个字段的值来发送数据,当值为0时就停止发送. 发送端和接收端各自维护着一个窗口,发送的滑动窗口控制可以发送的数据大小,接收端的窗口控制可以接收数据的大小. 发送端:LastByteAcked指向…