【linux网络编程学习笔记】第一节:创建TCP通信(单向)(socket、bind、listen、accept、connect、recv、send、shutdown、server\client)

本文是关于Linux网络编程的学习笔记,主要讲解如何创建TCP单向通信,包括socket、bind、listen、accept、connect、recv、send、shutdown等关键API的使用,以及服务端tcp_server.c和客户端tcp_client.c的示例代码。
摘要由CSDN通过智能技术生成

You make the failure complete when you stop trying.

  当你停止尝试的时候,你就完全失败了。

创建TCP通信(单向)

引言

套接字socket

TCP(即传输控制协议)

建立TCP通信的流程步骤

TCP相关API

socket()   创建套接字

bind()  绑定套接字与网络地址

listen()  监听套接字

accept()  等待连接请求

connect()  申请连接

recv()  接收数据

send()  发送数据

shutdown() 断开本端连接

单向通信例程:

tcp_server.c服务端:

tcp_client.c客户端:


 

引言

      上一阶段我linux系统所提供的一系列进程间通信机制(IPC):管道、FIFO、消息队列、信号量以及共享存储。这些机制允许在同一台计算机上运行的进程可以相互通信。本阶段我开始学习上不同主机上的通信的机制:网络进程间通信——套接字。

     本阶段的所有内容都是基于通信标准:TCP/IP协议栈上。关于TCP/IP的实现原理在本章节中不会涉及,主要讲解如何实现TCP和UDP的通信。

套接字socket

     套接字socket也是一个文件描述符,其操作和正如使用文件描述符访问文件类似,,应用程序用套接字描述符访问套接字。套接字描述符在linux系统中被当作是一种文件描述符。所以许多处理文件描述符的函数(如read和write)可以用于处理套接字描述符。为创建一个套接字,调用socket函数。

TCP(即传输控制协议)

     是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。

适用情况:

  1. 适合于对传输质量要求较高,以及传输大量数据的通信。
  2. 在需要可靠数据传输的场合,通常使用TCP协议
  3. MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

建立TCP通信的流程步骤

TCP相关API

socket()   创建套接字

#include <sys/socket.h>  
int socket(int domain, int type, int protocol);

函数功能

  • 套接字:申明一个通信接口TCP,UDP,UNIX本地进程通信

参数:

  • domain:域。
    • AF_INET/PF_INET: 网际协议
    • AF_UNIX/PF_UNIX:本地协议,可写成AF_LOCAL/PF_LOCAL
  • type:类型。
    • SOCK_STREAM:流式套接字
    • SOCK_DGRAM:数据报套接字
  • protocol:协议。一般为0

返回值:

  • 成功则待连接套接字,失败则返回-1

备注:

  • 在网际协议中,选择流式套接字就代表TCP 协议,选择数据包套接字就代表UDP 协议,第三个参数protocol 一般都不用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值