c语言的SOCKET(非常好的参考)

合集下载

socket编程c语言

socket编程c语言

socket编程c语言
摘要:
1.引言
2.socket 编程简介
3.socket 编程的基本概念
4.使用C 语言进行socket 编程
5.创建socket
6.连接socket
7.发送和接收数据
8.关闭socket
9.总结
正文:
Socket 编程是一种网络编程技术,它允许程序在不同的计算机之间进行通信。

C 语言是一种广泛使用的编程语言,也可以用于socket 编程。

Socket 编程的基本概念包括:套接字、协议、地址等。

套接字是一种数据结构,用于表示网络连接。

协议是网络通信的规则,例如TCP/IP 协议。

地址用于唯一标识网络上的计算机。

使用C 语言进行socket 编程需要使用一些库函数,例如socket、bind、listen、accept、connect、send、recv 等。

创建socket 需要调用socket 函数,该函数需要两个参数:套接字类型和协议类型。

套接字类型包括SOCK_STREAM、SOCK_DGRAM 等,协议类
型包括IPPROTO_TCP、IPPROTO_UDP 等。

连接socket 需要调用connect 函数,该函数需要三个参数:套接字、服务器地址和连接超时时间。

发送和接收数据需要调用send 和recv 函数,这两个函数需要两个参数:套接字和数据缓冲区。

关闭socket 需要调用close 函数,该函数需要一个参数:套接字。

总结起来,socket 编程是一种重要的网络编程技术,C 语言也可以用于socket 编程。

c语言socket函数

c语言socket函数

c语言socket函数Socket函数是在网络编程中非常重要的一部分,它提供了一种能够在网络上进行通信的机制。

在C语言中,Socket函数库提供了一组函数,用于创建、绑定、连接、接受和发送套接字等操作。

1.创建套接字:- socket(函数用于创建一个套接字,它接收三个参数:协议族(如AF_INET表示IPv4协议族)、套接字类型(如SOCK_STREAM表示面向连接的流式套接字)和协议(通常为0)。

- 示例:int sockfd = socket(AF_INET, SOCK_STREAM, 0);2.绑定套接字:- bind(函数用于将创建的套接字与指定的地址和端口绑定,以便在网络上监听和接收数据。

- 示例:struct sockaddr_in addr;addr.sin_family = AF_INET;addr.sin_port = htons(8080);addr.sin_addr.s_addr = htonl(INADDR_ANY);bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));3.监听套接字:- listen(函数用于将套接字设置为监听模式,用于接收来自网络的连接请求。

- 示例:listen(sockfd, 5);4.接受连接:- accept(函数用于接受客户端的连接请求,并返回一个新的套接字用于与客户端进行通信。

- 示例:int newsockfd = accept(sockfd, (struct sockaddr *)&addr, sizeof(addr));5.连接服务器:- connect(函数用于向服务器发送连接请求,并与服务器建立通信。

- 示例:struct sockaddr_in serv_addr;serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(8080);serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");connect(sockfd, (struct sockaddr *)&serv_addr,sizeof(serv_addr));6.发送和接收数据:- send(函数用于发送数据到已连接的套接字。

C语言实现socket简单通信实例

C语言实现socket简单通信实例

C语⾔实现socket简单通信实例本⽂实例讲述了C语⾔实现socket简单通信的⽅法,分享给⼤家供⼤家参考。

具体实现⽅法如下:服务器端代码如下:/*============================================================================Name : server.cAuthor : kingVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================*/#include <stdlib.h>#include <pthread.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <arpa/inet.h> /* inet(3) functions */#include <stdlib.h>#include <errno.h>#include <stdio.h>#include <string.h>int handle(int point);int main(void) {int sfd, ind;struct sockaddr_in addr;struct sockaddr_in clent;char resv[1024], sendbuf[1024];char buf[1024];char * myaddr = "192.168.231.128";int ret; // 返回值设置socklen_t lent;int pid;addr.sin_family = AF_INET; //IPv4 Internet protocolsaddr.sin_port = htons(5050); //这⾥输⼊服务器端⼝号addr.sin_addr.s_addr = inet_addr(myaddr);; //INADDR_ANY表⽰本机IP//獲取socket描述符,IPV4asdprintf("socket start \n");sfd = socket(AF_INET, SOCK_STREAM, 0);if (sfd < 0) {printf("socket error \n");return -1;}printf("bind start \n");//将套接⼦与指定端⼝链接if (bind(sfd, (struct sockaddr *) &addr, sizeof(struct sockaddr)) < 0) {printf("bind error \n");return -1;}//监听套接⼦printf("listen start \n");if (listen(sfd, 1024) < 0) {printf("listen error \n");return -1;}for (;;) {//接受来⾃客户端的信息printf("accept start \n");memset(&clent, 0, sizeof(clent));lent = sizeof(clent);ind = accept(sfd, (struct sockaddr *) &clent, &lent);if (ind < 0) {printf("accept error %d \n", ind);return -1;}printf("infor \n");printf("clent addr%s porit %d\n",inet_ntop(AF_INET, &clent.sin_addr, buf, sizeof(buf)),ntohs(clent.sin_port));pid = fork();if (pid == 0) {//⼦进程close(sfd);handle(ind);} else if (pid < 0) {//errorclose(ind);} else {//⽗进程}}return EXIT_SUCCESS;}int handle(int point) {int retn;char buf[1024];for (;;) {retn = read(point, buf, sizeof(buf));if (retn < 0) {printf("read error \n");close(point);break;} else if (retn == 0) {printf("client exit \n");close(point);break;}printf("client:%s\n", buf);if (strcmp("exit", buf) == 0) {printf("exit \n");close(point);return 0;}}return 0;}客户端代码如下:/*============================================================================ Name : client.cAuthor : kingVersion :Copyright : Your copyright noticeDescription : Hello World in C, Ansi-style============================================================================ */#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h> /* inet(3) functions */int handle(int fd);int main(void) {int nsd;char buf[1024];char * myaddr = "192.168.231.128";struct sockaddr_in addr;printf("welcome to echo client\n");nsd = socket(AF_INET, SOCK_STREAM, 0);printf("connect start1 \n");//bzero(addr, sizeof(*addr));memset(&addr,0,sizeof(addr));printf("connect start2 \n");addr.sin_family = AF_INET;addr.sin_port = htons(5050);addr.sin_addr.s_addr=inet_addr(myaddr);printf("connect start3 \n");if (connect(nsd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) < 0) {printf("connect error \n");return -1;}sleep(5);printf("handle start\n");handle(nsd);close(nsd);return EXIT_SUCCESS;}int handle(int fd) {char sendl[1024], rev[1024];int retn;for (;;) {memset(sendl,0,sizeof(sendl));memset(rev,0,sizeof(rev));if (fgets(sendl, 1024, stdin) == NULL) {break;}//printf("wirte start\n");write(fd, sendl, strlen(sendl));read(fd, rev,strlen(rev));}return 0;}注意:int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);记住⼀定是值 addrlenaccept socklen_t *addrlen要是⼀个指针希望本⽂所述对⼤家C语⾔⽹络程序设计的学习有所帮助。

C语言SOCKET编程超级完整

C语言SOCKET编程超级完整

介绍Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等…好在我已经将这些事完成了,我将和所有人共享我的知识了。

如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。

--------------------------------------------------------------------------------读者对象这个文档是一个指南,而不是参考书。

如果你刚开始 socket 编程并想找一本入门书,那么你是我的读者。

但这不是一本完全的 socket 编程书。

--------------------------------------------------------------------------------平台和编译器这篇文档中的大多数代码都在 Linux 平台PC 上用 GNU 的gcc 成功编译过。

而且它们在 HPUX平台上用 gcc 也成功编译过。

但是注意,并不是每个代码片段都独立测试过。

--------------------------------------------------------------------------------目录:1) 什么是套接字?2) Internet 套接字的两种类型3) 网络理论4) 结构体5) 本机转换6) IP 地址和如何处理它们7) socket()函数8) bind()函数9) connect()函数10) listen()函数11) accept()函数12) send()和recv()函数13) sendto()和recvfrom()函数14) close()和shutdown()函数15) getpeername()函数16) gethostname()函数17) 域名服务(DNS)18) 客户-服务器背景知识19) 简单的服务器20) 简单的客户端21) 数据报套接字Socket22) 阻塞23) select()--多路同步I/O24) 参考资料--------------------------------------------------------------------------------什么是 socket?你经常听到人们谈论着“socket”,或许你还不知道它的确切含义。

Linux下C语言的socket函数解析

Linux下C语言的socket函数解析

Linux下C语言的socket函数解析socketsocket()我们使用系统调用socket()来获得文件描述符:#include#includeint socket(int domain,int type,int protocol);第一个参数domain设置为“AF_INET”。

第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。

第三个参数设置为0。

系统调用socket()只返回一个套接口描述符,如果出错,则返回-1。

bind()一旦你有了一个套接口以后,下一步就是把套接口绑定到本地计算机的某一个端口上。

但如果你只想使用connect()则无此必要。

下面是系统调用bind()的使用方法:#include#includeintbind(int sockfd,struct sockaddr*my_addr,int addrlen);第一个参数sockfd是由socket()调用返回的套接口文件描述符。

第二个参数my_addr是指向数据结构sockaddr的指针。

数据结构sockaddr中包括了关于你的地址、端口和IP地址的信息。

第三个参数addrlen可以设置成sizeof(structsockaddr)。

下面是一个例子:#include#include#include#define MYPORT 3490main(){int sockfd;struct sockaddr_inmy_addr;sockfd=socket(AF_INET,SOCK_STREAM,0);/*do someerror checking!*/my_addr.sin_family=AF_INET;/*hostbyteorder*/my_addr.sin_port=htons(MYPORT);/*short,network byte order*/my_addr.sin_addr.s_addr=inet_addr("132.241.5.10");bzero(&(my_addr.sin_zero),8);/*zero the rest of the struct*//*don't forget your error checking for bind():*/bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr));...如果出错,bind()也返回-1。

c 标准库 socket

c 标准库 socket

c 标准库 socketC 标准库中的socket。

在C语言中,socket是一个非常重要的概念,它提供了一种通信机制,使得不同的程序能够在网络上进行数据交换。

在C标准库中,我们可以通过使用socket 来实现网络编程,实现客户端和服务器之间的通信。

本文将介绍C标准库中socket 的基本概念、使用方法以及一些常见问题的解决方案。

首先,我们需要了解什么是socket。

Socket是一种通信机制,它允许不同的程序在网络上进行数据交换。

在C标准库中,我们可以通过包含<sys/socket.h>头文件来使用socket相关的函数和数据结构。

使用socket编程时,我们需要创建一个socket对象,并通过bind、listen、accept等函数来建立和管理网络连接。

接下来,我们来看一下如何在C标准库中使用socket。

首先,我们需要创建一个socket对象,可以通过调用socket函数来实现。

该函数接受三个参数,分别是地址族、套接字类型和协议。

例如,我们可以通过调用socket(AF_INET,SOCK_STREAM, 0)来创建一个基于IPv4协议的流式套接字。

接着,我们可以通过调用bind函数来绑定套接字到一个特定的地址和端口。

然后,我们可以通过调用listen函数来监听连接请求,并通过accept函数来接受客户端的连接。

最后,我们可以通过read和write函数来进行数据的读写操作。

在实际的网络编程中,我们可能会遇到一些常见的问题,比如如何处理并发连接、如何处理网络错误等。

针对这些问题,我们可以通过使用多线程或多进程来处理并发连接,可以通过设置超时时间来处理网络错误。

另外,我们还可以通过使用非阻塞IO来提高程序的性能,通过使用select函数来实现多路复用等技术来优化网络编程的性能和稳定性。

总结一下,C标准库中的socket提供了一种通信机制,使得不同的程序能够在网络上进行数据交换。

socket编程c语言

socket编程c语言

socket编程c语言Socket编程是一种网络编程的方法,它通过使用TCP/IP协议栈,允许计算机上的不同进程之间进行通信。

在C语言中,我们可以使用socket库来实现这种网络编程。

Socket是一种抽象层,它提供了一种机制,可以将网络通信抽象为输入输出流。

通过Socket编程,我们可以建立网络连接,并通过网络发送和接收数据。

Socket编程主要涉及两种类型的Socket,即服务器Socket和客户端Socket。

服务器Socket用于监听并接受来自客户端的连接请求,而客户端Socket用于向服务器发送连接请求。

在C语言中,创建一个Socket可以通过调用socket()函数来实现。

这个函数接受三个参数:地址族(AF_INET表示使用IPv4地址)、套接字类型(SOCK_STREAM表示使用TCP协议)、以及协议类型(通常为0,表示让系统自动选择合适的协议)。

创建Socket后,我们可以通过调用bind()函数将Socket与一个特定的IP地址和端口号绑定在一起。

然后,调用listen()函数将Socket置于监听状态,等待客户端的连接请求。

如果有客户端发送连接请求,服务器Socket会接受这个请求,并返回一个新的Socket,用于与该客户端进行通信。

然后,服务器可以通过调用accept()函数来接受这个连接请求。

accept()函数会返回一个新的Socket,用于与客户端进行通信。

客户端Socket可以通过调用connect()函数与服务器建立连接。

这个函数接受服务器的IP地址和端口号作为参数。

如果连接成功,客户端Socket就可以像与服务器直接通信一样,发送和接收数据。

通过Socket编程,我们可以实现各种各样的网络应用。

例如,我们可以实现一个Web服务器,用于提供网页和处理HTTP请求。

我们也可以实现一个聊天程序,用于实时聊天。

此外,还可以通过Socket编程实现其他各种网络服务,如FTP、SMTP、POP3等。

SOCKET编程(C语言实现)

SOCKET编程(C语言实现)

SOCKET编程(C语言实现)
一、简介
SOCKET编程可以理解为IP地址和端口的组合,它是一种网络编程的
基础,可以用来实现不同计算机之间的计算机程序通信。

它有两种特点:1.使用TCP/IP协议进行连接;2.能够支持多用户客户端/服务器编程。

使用SOCKET编程实现的网络通信,其基本流程是:客户端向服务器
发起连接,服务器接受客户端的连接请求并响应,双方建立连接后,客户
端发送数据,服务器接受客户端的数据并做出响应,最后双方断开连接。

二、开发环境
SOCKET编程是用C语言编写的,所以需要使用C语言编译器进行编译。

常用的C语言开发环境有:Visual Studio、Xcode、Eclipse等。

Xcode和Eclipse比较适合用来开发Mac版本的SOCKET程序,但Windows
版本的SOCKET程序需要使用Visual Studio开发。

使用Visual Studio开发SOCKET编程,需要引入WinSock2.h和
WS2_32.dll库,打开工程属性->调试->编译器->预处理器->预处理器定义,增加 WIN32 和 _WINSOCK_DEPRECATED_NO_WARNINGS变量,这样就可
以在工程中应用Winsock2.h库了。

三、编程实现
1. 创建Socket
在SOCKET编程中,每台主机都必须有一个唯一的IP地址,然后客户
端和服务器之间必须建立连接。

创建Socket时,需要调用socket(函数,函数头如下:
// 创建socket。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

介绍Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用connect() 前的bind() 的结构而不知所措?等等…好在我已经将这些事完成了,我将和所有人共享我的知识了。

如果你了解 C 语言并想穿过网络编程的沼泽,那么你来对地方了。

--------------------------------------------------------------------------------读者对象这个文档是一个指南,而不是参考书。

如果你刚开始socket 编程并想找一本入门书,那么你是我的读者。

但这不是一本完全的socket 编程书。

--------------------------------------------------------------------------------平台和编译器这篇文档中的大多数代码都在Linux 平台PC 上用GNU 的gcc 成功编译过。

而且它们在HPUX平台上用gcc 也成功编译过。

但是注意,并不是每个代码片段都独立测试过。

--------------------------------------------------------------------------------目录:1) 什么是套接字?2) Internet 套接字的两种类型3) 网络理论4) 结构体5) 本机转换6) IP 地址和如何处理它们7) socket()函数8) bind()函数9) connect()函数10) listen()函数11) accept()函数12) send()和recv()函数13) sendto()和recvfrom()函数14) close()和shutdown()函数15) getpeername()函数16) gethostname()函数17) 域名服务(DNS)18) 客户-服务器背景知识19) 简单的服务器20) 简单的客户端21) 数据报套接字Socket22) 阻塞23) select()--多路同步I/O24) 参考资料--------------------------------------------------------------------------------什么是socket?你经常听到人们谈论着“socket”,或许你还不知道它的确切含义。

现在让我告诉你:它是使用标准Unix 文件描述符(file descriptor) 和其它程序通讯的方式。

什么?你也许听到一些Unix高手(hacker)这样说过:“呀,Unix中的一切就是文件!”那个家伙也许正在说到一个事实:Unix 程序在执行任何形式的I/O 的时候,程序是在读或者写一个文件描述符。

一个文件描述符只是一个和打开的文件相关联的整数。

但是(注意后面的话),这个文件可能是一个网络连接,FIFO,管道,终端,磁盘上的文件或者什么其它的东西。

Unix 中所有的东西就是文件!所以,你想和Internet上别的程序通讯的时候,你将要使用到文件描述符。

你必须理解刚才的话。

现在你脑海中或许冒出这样的念头:“那么我从哪里得到网络通讯的文件描述符呢?”,这个问题无论如何我都要回答:你利用系统调用socket(),它返回套接字描述符(socket descriptor),然后你再通过它来进行send() 和recv()调用。

“但是...”,你可能有很大的疑惑,“如果它是个文件描述符,那么为什么不用一般调用read()和write()来进行套接字通讯?”简单的答案是:“你可以使用!”。

详细的答案是:“你可以,但是使用send()和recv()让你更好的控制数据传输。

”存在这样一个情况:在我们的世界上,有很多种套接字。

有DARPA Internet 地址(Internet 套接字),本地节点的路径名(Unix套接字),CCITT X.25地址(你可以将X.25 套接字完全忽略)。

也许在你的Unix 机器上还有其它的。

我们在这里只讲第一种:Internet 套接字。

--------------------------------------------------------------------------------Internet 套接字的两种类型什么意思?有两种类型的Internet 套接字?是的。

不,我在撒谎。

其实还有很多,但是我可不想吓着你。

我们这里只讲两种。

除了这些, 我打算另外介绍的"Raw Sockets" 也是非常强大的,很值得查阅。

那么这两种类型是什么呢?一种是"Stream Sockets"(流格式),另外一种是"Datagram Sockets"(数据包格式)。

我们以后谈到它们的时候也会用到"SOCK_STREAM" 和"SOCK_DGRAM"。

数据报套接字有时也叫“无连接套接字”(如果你确实要连接的时候可以用connect()。

) 流式套接字是可靠的双向通讯的数据流。

如果你向套接字按顺序输出“1,2”,那么它们将按顺序“1,2”到达另一边。

它们是无错误的传递的,有自己的错误控制,在此不讨论。

有什么在使用流式套接字?你可能听说过telnet,不是吗?它就使用流式套接字。

你需要你所输入的字符按顺序到达,不是吗?同样,WWW浏览器使用的HTTP 协议也使用它们来下载页面。

实际上,当你通过端口80 telnet 到一个WWW 站点,然后输入“GET pagename”的时候,你也可以得到HTML 的内容。

为什么流式套接字可以达到高质量的数据传输?这是因为它使用了“传输控制协议(The Transmission Control Protocol)”,也叫“TCP”(请参考RFC-793 获得详细资料。

)TCP 控制你的数据按顺序到达并且没有错误。

你也许听到“TCP”是因为听到过“TCP/IP”。

这里的IP 是指“Internet 协议”(请参考RFC-791。

) IP 只是处理Internet 路由而已。

那么数据报套接字呢?为什么它叫无连接呢?为什么它是不可靠的呢?有这样的一些事实:如果你发送一个数据报,它可能会到达,它可能次序颠倒了。

如果它到达,那么在这个包的内部是无错误的。

数据报也使用IP 作路由,但是它不使用TCP。

它使用“用户数据报协议(User Datagram Protocol)”,也叫“UDP” (请参考RFC-768。

)为什么它们是无连接的呢?主要是因为它并不象流式套接字那样维持一个连接。

你只要建立一个包,构造一个有目标信息的IP 头,然后发出去。

无需连接。

它们通常使用于传输包-包信息。

简单的应用程序有:tftp, bootp等等。

你也许会想:“假如数据丢失了这些程序如何正常工作?”我的朋友,每个程序在UDP 上有自己的协议。

例如,tftp 协议每发出的一个被接受到包,收到者必须发回一个包来说“我收到了!”(一个“命令正确应答”也叫“ACK”包)。

如果在一定时间内(例如5秒),发送方没有收到应答,它将重新发送,直到得到ACK。

这一ACK过程在实现SOCK_DGRAM 应用程序的时候非常重要。

--------------------------------------------------------------------------------网络理论既然我刚才提到了协议层,那么现在是讨论网络究竟如何工作和一些关于SOCK_DGRAM 包是如何建立的例子。

当然,你也可以跳过这一段,如果你认为已经熟悉的话。

现在是学习数据封装(Data Encapsulation) 的时候了!它非常非常重要。

它重要性重要到你在网络课程学(图1:数据封装)习中无论如何也得也得掌握它。

主要的内容是:一个包,先是被第一个协议(在这里是TFTP )在它的报头(也许是报尾)包装(“封装”),然后,整个数据(包括TFTP 头)被另外一个协议(在这里是UDP )封装,然后下一个( IP ),一直重复下去,直到硬件(物理) 层( 这里是以太网)。

当另外一台机器接收到包,硬件先剥去以太网头,内核剥去IP和UDP 头,TFTP程序再剥去TFTP头,最后得到数据。

现在我们终于讲到声名狼藉的网络分层模型(Layered Network Model)。

这种网络模型在描述网络系统上相对其它模型有很多优点。

例如,你可以写一个套接字程序而不用关心数据的物理传输(串行口,以太网,连接单元接口(AUI) 还是其它介质),因为底层的程序会为你处理它们。

实际的网络硬件和拓扑对于程序员来说是透明的。

不说其它废话了,我现在列出整个层次模型。

如果你要参加网络考试,可一定要记住:应用层(Application)表示层(Presentation)会话层(Session)传输层(Transport)网络层(Network)数据链路层(Data Link)物理层(Physical)物理层是硬件(串口,以太网等等)。

应用层是和硬件层相隔最远的--它是用户和网络交互的地方。

这个模型如此通用,如果你想,你可以把它作为修车指南。

把它对应到Unix,结果是:应用层(Application Layer) (telnet, ftp,等等)传输层(Host-to-Host Transport Layer) (TCP, UDP)Internet层(Internet Layer) (IP和路由)网络访问层(Network Access Layer) (网络层,数据链路层和物理层)现在,你可能看到这些层次如何协调来封装原始的数据了。

看看建立一个简单的数据包有多少工作?哎呀,你将不得不使用"cat" 来建立数据包头!这仅仅是个玩笑。

对于流式套接字你要作的是send() 发送数据。

对于数据报式套接字,你按照你选择的方式封装数据然后使用sendto()。

内核将为你建立传输层和Internet 层,硬件完成网络访问层。

这就是现代科技。

现在结束我们的网络理论速成班。

哦,忘记告诉你关于路由的事情了。

但是我不准备谈它,如果你真的关心,那么参考IP RFC。

--------------------------------------------------------------------------------结构体终于谈到编程了。

在这章,我将谈到被套接字用到的各种数据类型。

因为它们中的一些内容很重要了。

首先是简单的一个:socket描述符。

它是下面的类型:int仅仅是一个常见的int。

相关文档
最新文档