int socket(int family,int type,int protocol);
family:
AF_INET ipv4协议
AF_INET6 ipv6协议
AF_LOCAL unix域协议
AF_ROUTE 路由套接口
 
type:
SOCK_STREAM 字节流套接口
SOCK_DGRAM 数据包套接口
SOCK_RAW 原始套接口
 
返回一个很小的非负整数,叫做套接口描述字,简称套接字sockfd
 
AF_XXX地址族
PF_XXX协议族
 
connect()建立一个TCP连接
 
三次握手出错:
1 发送无应答,6秒后再次发送,无应答,24秒后再次发送,若75秒钟后仍未相应,则返回错误
2 硬错:SYN返回RST:SYN到达端口,但没有监听进程、TCP想取消一个已有的连接、TCP接受了一个根本不存在的连接
3 软错:中间路由器产生目的地不可达的ICMP错误
 
bind() 给套接口分配一个本地协议地址
 
struct sockaddr_in servaddr;
servaddr.sin_addr.s_addr = htol(INADDR_ANY);
头文件<netinet/in.h>定义的所有INADDR_常值都是主机字节序,所以应该使用htol
 
捆绑非通配IP地址的好处是:由内核将给定的目的IP地址解复用后送往服务器进程
 
int listen(int sockfd,int backlog);
listen()仅被TCP服务器使用:在调用socket bind之后,accept之前
1 将未连接的套接口转换成被动套接口,指示内核应接受只想此套接口的连接请求。
2 函数第二个参数规定了,套接口排队的最大连接个数
 
对于给定的监听套接口,有两个队列:
1 未完成连接队列 incomplete connection queue  SYN_RCVD状态
2 已完成连接队列 complete connection queue ESTABLISHED状态
 
accept() TCP服务器调用,从已完成的队列头返回下一个已完成的连接。若完成队列为空,则睡眠
 
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t * addrlen);
addrlen是值-结果参数
 
fork()一次调用两个返回值:
1 父进程调用返回的是子进程的ID
2 子进程调用返回0
 
close()将套接口设置为已关闭标记,并立即返回到进程。
 
描述字访问计数,用于设置父进程的访问状况。
 

基本的TCP编程的更多相关文章

  1. Java TCP编程

    Java编写TCP编程--回射信息实例 注:简单的tcp联系,还存在问题,readUTF()为阻塞型,如果之前的用户一直不输入,则一直阻塞,之后的用户再连接会出现问题. import java.io. ...

  2. [C# 网络编程系列]专题五:TCP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/08/25/2656840.html 前言 前面专题的例子都是基于应用层上的HTTP协议的介绍, 现在本专题来 ...

  3. python中的TCP编程学习

    今天看了一下关于python的TCP编程. 发现思路和其他语言(比如java)思路基本上差点儿相同. 先看client.基本过程例如以下: 第一步:创建一个socket 第二步:建立连接 第三步:发送 ...

  4. C#网络程序设计(3)网络传输编程之TCP编程

        网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程.     (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...

  5. 【Socket编程】通过Socket实现TCP编程

    通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...

  6. JAVA 通过 Socket 实现 TCP 编程

    简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...

  7. 网络编程之TCP编程

    网络编程之TCP编程 前面已经介绍过关于TCP协议的东西,这里不做赘述.Java对于基于TCP协议的网络通信提供了良好的封装,Java使用socket对象来代表两端的通信窗口,并通过Socket产生I ...

  8. 在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来

    在做关于NIO TCP编程小案例时遇到无法监听write的问题,没想到只是我的if语句的位置放错了位置,哎,看了半天没看出来 贴下课堂笔记: 在Java中使用NIO进行网络TCP套接字编程主要以下几个 ...

  9. 五十四、linux 编程——TCP 编程模型

    54.1 编程模型介绍 54.1.1 TCP 客户端服务器编程模型 客户端调用序列 调用 socket 函数创建套接字 调用 connect 连接服务器端 调用 I/O 函数(read/write) ...

  10. Linux C Socket TCP编程介绍及实例

    转自:https://blog.csdn.net/lell3538/article/details/53335231 { printf("向服务器发送数据:%s\n",sendbu ...

随机推荐

  1. <十二>面向对象分析之UML核心元素之节点和设备

    节点,设备

  2. Python学习2-列表和元组

    Python学习2-列表和元组 标签(空格分隔): 列表 元组 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号--即元素的位置,也称为索引.索引从0开始. ...

  3. Oracle 安装 检查操作系统版本 必须是 5.0 5.1 的解决办法

    打开 oraparam.ini文件 添加红色部分 Windows=5.1,5.2,6.1 最下面添加 [Windows-6.1-required]#Minimum display colours fo ...

  4. 嵌入式 hi3518平台多路码流添加osd

    <span style="font-family:Courier New;"> /******************************************* ...

  5. Linux下常用软件

    一, vmtool安装, 进入桌面就后,如果没有看到VMware Tools光盘, 请点击VMware Station菜单栏上的“虚拟机”,然后选择“安装VMware Tools”,就可以在桌面上以看 ...

  6. Yii 框架创建自己的 web 应用

    http://m.baidu.com/from=2001a/bd_page_type=1/ssid=0/uid=0/pu=usm%400%2Csz%401320_1003%2Cta%40iphone_ ...

  7. 二叉树的基本操作(C)

    实现二叉树的创建(先序).递归及非递归的先.中.后序遍历 请按先序遍历输入二叉树元素(每个结点一个字符,空结点为'='): ABD==E==CF==G== 先序递归遍历: A B D E C F G ...

  8. bzoj1036 树的统计Count

    第一次写链剖,于是挑了个简单的裸题写. 以下几点要注意: 1.链剖中的height是从根到该店经过的轻边个数 2.分清num与sum..... #include<cstdio> #incl ...

  9. 搞JAVA在北京月薪15K的朋友来到厦门却很难找到工作

    朋友是搞JAVA开发的,从北京来.来前朋友们都感觉他在厦门应该很快就能找到工作,因为厦门的IT人员很缺. 没想到来厦门大概半个多月了,到现在都还没着落.面试单位每周基本只有两家,而且面试的感觉都说不错 ...

  10. 谈layout_gravity和gravity的用法

      相信对于Android的初学者来说,大家都曾经被layout里这两个极其相似的属性迷惑过. 简单使用一下搜索工具,我们就不难找到下面这样的答案: layout_gravity 表示组件自身在父组件 ...