《LINUX C编程实战》自学笔记——套接字编程(一)
来源:互联网 发布:合同档案管理系统软件 编辑:程序博客网 时间:2024/06/06 03:20
#include<sys/socket.h>
(1)请求建立连接——套接字与服务器连接。
(1.1)
如果该套接字类型是SOCK_STREAM,则connect函数用于向服务器发出连接请求,服务器的IP地址和端口号由serv_addr指定;
如果该套接字类型是SOCK_DGRAM,则connect并不建立真正的连接,只是告诉内核与该套接字通讯的目的地址(由第二个参数指定),只有该目的地址发来的数据才会被该socket接收。对于SOCK_DGRAM类型的套接字,connect的好处是不必每次发送和接收数据时都指定目的地址。
(1.2)
对于面向连接(如TCP)的套接字,其只能调用一次connect函数。
对于无连接(如UDP)的套接字,可以多次 调用connect以改变目的地址的绑定。将参数serv_addr中的sa_family设置为AF_UNSPEC即可。
bind和connect的参数相似。
serv_addr提供了sock_fd将绑定的本地地址,可以将serv_addr的sin_addr设置为INADDR_ANY而不是某个确定的IP就可以绑定到任何网络接口。对于只有一个IP地址的计算机,INADDR_ANY就是该机的IP地址。对于有多块网卡的计算机,INADDR_ANY表示本服务器程序将处理来自所有网络接口上相应端口的连接请求。
(3)将socket建立的是主动套接字
(4)接受连接,可以接收的状态。只能对面向连接的套接字使用accept函数。 套接字接受客户端连接请求
int accpet(int sock_fd, struct sockaddr *addr, socklen_t *addrlen)
接受连接后,系统写入addr客户端的地址和端口等信息,接受连接前是没有的。
(5)TCP套接字的数据传输
(5.1)send:send负责将buf中的数据复制到发送缓冲区。复制完成就返回。
(5.2)recv:recv将s的接收缓冲区数据复制到buf中,len为buf的长度。
第一步:等待直到套接字发送缓冲区的数据发送完毕;
第二步:等待直到套接字接收缓冲区有数据并且接收完毕,开始从接收缓冲区复制数据到buf中;
第三步:复制完毕,返回值。
- 《LINUX C编程实战》自学笔记——套接字编程(一)
- linux套接字编程笔记(一)--TCP与UDP
- Linux 的套接字编程 (一)
- Linux 的套接字编程 (一)
- Socket套接字编程(一)——TCP编程
- 网络编程——Socket(Linux套接字编程)
- Linux网络编程(一) 套接字编程简介
- 网络编程笔记一、Socket套接字
- Linux编程设计——套接字
- 套接字编程学习笔记(一) 服务器端demo说明
- UNP笔记(2)——基本套接字编程
- C++-----编程实战(一)
- linux网络设备应用与驱动编程学习笔记(1)——应用编程(套接字)
- 断开套接字连接-----网络编程(Linux----C)
- Linux网络编程——原始套接字编程
- Linux网络编程——原始套接字编程
- Linux网络编程——原始套接字编程
- linux网络编程——套接字(socket)入门
- Windows Communication Foundation and RESTful Web Services Primer(教你制作rest wcf)
- java版二维码实例(非安卓版)
- ORACLE 使用函数返回表数据
- Python 网页编程- Pyramid 安装测试
- c++之SQLite的增删改查
- 《LINUX C编程实战》自学笔记——套接字编程(一)
- Javascript如何获取URL地址栏参数
- word07在失去焦点之后不能使用鼠标点击的解决方法
- Mysql中排序在SQL优化中的部分解析
- Android系统Surface机制的SurfaceFlinger服务的启动过程分析
- 分布式ID的简单实现
- 报错集锦
- SQLite3 C/C++ 开发接口简介(API函数)
- JAVA 对象克隆clone