LINUX TCP/IP socket通信1

经过了一个多星期的学习,我在这里总结一下关于Linux,Windows的socket TCP通信的不同情形。

  1. server,client之间的通信
    https://blog.csdn.net/wesigj/article/details/99294538
  2. Socket之TCP全双工Server-Client通信
    https://blog.csdn.net/wesigj/article/details/99322695
  3. client,client之间的通信
  4. 一个小应用-------网络聊天室https://blog.csdn.net/wesigj/article/details/99418596
  5. Linux与Windows之间的socket通信
  6. socket实现两台pc之间的数据传输功能,包括windows到linux,TCP/IP

    文章目录

所需要的库文件

  • #include <stdio.h>
    使用预处理指令 #include 可以引用用户和系统头文件。它的形式有以下两种:
    #include
    这种形式用于引用系统头文件。它在系统目录的标准列表中搜索名为 file 的文件。在编译源代码时,您可以通过 -I 选项把目录前置在该列表前。
    #include “file”
    这种形式用于引用用户头文件。它在包含当前文件的目录中搜索名为 file 的文件。
    引用头文件的操作
    #include 指令会指示 C 预处理器浏览指定的文件作为输入。预处理器的输出包含了已经生成的输出,被引用文件生成的输出以及 #include 指令之后的文本输出。
  • #include <stdlib.h>
    stdlib 头文件即standard library标准库头文件。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具体的内容可以打开编译器的include目录里面的stdlib.h头文件查看。
  • #include <string.h>
    C语言标准库中一个常用的头文件,在使用到字符数组时需要使用。string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。
    常用函数如下:
    strlen求字符串长度
    strcmp比较2个字符串是否一样
    strcat字符串连接操作
    strcpy字符串拷贝操作
    strncat字符串连接操作(前n个字符)
    strncpy字符串拷贝操作(前n个字符)
    strchr查询字串
    strstr 查询子串
  • #include <unistd.h>
    是POSIX标准定义的unix类系统定义符号常量的头文件,包含了许多UNIX系统服务的函数原型,例如read函数、write函数和getpid函数。
    对于类 Unix 系统,unistd.h 中所定义的接口通常都是大量针对系统调用的封装(英语:wrapper functions),如 fork、pipe 以及各种 I/O 原语(read、write、close 等等)。
    类似于 Cygwin 和 MinGW 的 Unix 兼容层也提供相应版本的 unistd.h。
  • #include <fcntl.h>
    fcntl.h与unistd.h
    fcntl.h定义了很多宏和open,fcntl函数原型
    unistd.h定义了更多的函数原型
    close(关闭文件)
    表头文件#include<unistd.h>
    定义函数int close(int fd);
    函数说明当使用完文件后若已不再需要则可使用close()关闭该文件,二
    close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为
    先前由open()或creat()所返回的文件描述词。
    返回值若文件顺利关闭则返回0,发生错误时返回-1。
    错误代码EBADF 参数fd 非有效的文件描述词或该文件已关闭。
    附加说明虽然在进程结束时,系统会自动关闭已打开的文件,但仍建议自行
    关闭文件,并确实检查返回值。(系统可能有缓冲,在适当的时候才写入,特别是NFS网络文件系统)
    open(打开文件)
  • #include <sys/shm.h>
    <sys/shm.h> 共享存储
  • #include <sys/types.h>
    基本系统数据类型
    是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型。linux编程中经常用到的头文件。
  • #include <netinet/in.h>
    1、socketaddr_in 结构体

struct sockaddr_in

eg:
#define SERV_PORT 6666
struct sockaddr_in serveraddr;
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(SERV_PORT);

htons系统调用

extern uint16_t htons (uint16_t __hostshort)
__THROW attribute ((const));

htons是将整型变量从主机字节顺序转变成网络字节顺序, 就是整数在地址空间存储方式变为高位字节存放在内存的低地址处。
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释,网络字节顺序采用big-endian排序方式。

  • #include <sys/socket.h>
    创建套接字: socket()
    绑定本机端口: bind()
    建立连接: connect(),accept()
    侦听端口: listen()
    数据传输: send(), recv()
    输入/输出多路复用: select()
    关闭套接只: closesocket()

  • #include <arpa/inet.h>
    /* Convert from presentation format of an Internet number in buffer
    starting at CP to the binary network format and store result for
    interface type AF in buffer starting at BUF. */
    extern int inet_pton (int __af, __const char *__restrict __cp,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeSiGJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值