`

基本的套接字编程

阅读更多
以下头文件都是#include<sys/socket.h>

1.socket函数:指定期望的通信协议类型
int socket(int family,int type,int protocol);
返回值叫做套接字描述符,socket descriptor,一般简称sockfd,失败返回-1,成功返回非负值
family:指明协议族,一般:AF_INET(IP protocol family,IPV4)
type:一般是SOCK_STREAM(字节流套接字,也可以是数据报套字SOCK_DGRAM等)
protocol:一般设为0,也可以使用IPPROTO_TCP等

2.connect函数:客户端用此与server来建立tcp连接,失败返回-1,成功返回0
int connect (int sockfd,const struct sockaddr* servaddr,socklen_t addrlen);
sockfd:套接字描述符
servaddr和addrlen是一个指向套接字地址结构的指针与该结构的大小.

3.bind函数:把一个本地协议地址赋予一个套接字,失败返回-1,成功返回0
int bind(int sockfd,const const struct sockaddr* servaddr,socklen_t addrlen);
看起来参数与connect一样哦!

4.listen函数:仅由TCP服务器调用,当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字.listen函数把一个未连接的套接字换成一个被动套接字,指示内核应该接受指向该套接字的连接请求.失败返回-1,成功返回0
backlog:内核应该为相应套接字排除的最大连接数,以下2种之和要小于backlog
4.1未完成连接队列:已由某个客户发出并到达服务器,而服务器正在等待完成相应的TCP三路握手过程.这些套接字处于SYN_RCVD状态.
4.2已完成连接队列:每个已完成TCP三路握手过程的客户对应其中一项.这些套接字处理ESTABLISHED状态.

5.accept函数:由TCP服务器调用,用于从已完成队列队头返回下一个已完成连接.如果已完成连接队列为空,那么进程被投入睡眠.失败返回-1,成功返回非负
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen);
如果对后面2个参数不感兴趣,则置为空.

6.fork函数:调用一次,返回两次,有点麻烦,以后再看!

7.close函数:关闭套接字,终止TCP连接
int close(int sockfd);失败返回-1,成功返回0
分享到:
评论

相关推荐

    介绍套接字编程的基本原理,简单易懂

    在这篇文章中,我们将介绍套接字编程的基本原理,包括客户机/服务器模式、基本套接字、套接字连接、数据传输、多路复用和关闭套接字等内容。 一、客户机/服务器模式 客户机/服务器模式是TCP/IP网络中两台计算机...

    Socket套接字—Java套接字编程

    在Java中,Socket和ServerSocket类提供了套接字编程的基本功能。本文将深入探讨Java套接字编程的相关知识点,包括Socket和ServerSocket的使用、数据传输、异常处理以及实际应用中的常见问题。 1. **Socket类**:...

    Qt套接字编程源码

    **Qt套接字编程源码详解** 在软件开发中,网络通信是不可或缺的一部分,而Qt框架提供了一套强大且易用的套接字编程接口,使得开发者能够方便地实现客户端和服务器之间的数据交换。本篇将深入探讨Qt套接字编程的原理...

    Java 套接字编程Java 套接字编程

    本文将详细介绍Java套接字编程的基本概念、原理以及实际操作方法。 #### 二、Java网络编程概述 Java网络编程主要依赖于`java.net`和`javax.net`这两个包中的API。这些API提供了强大的功能,使得开发者能够轻松地...

    C++套接字编程实例详解

    通过这些函数的使用,可以实现套接字编程的基本功能,如创建套接字、接受连接请求、绑定地址、关闭套接字等。这些函数的使用可以使得开发者更方便地编写套接字程序,提高了开发效率和代码可读性。

    基于Java的Socket套接字编程 源代码

    Java的Socket套接字编程是网络通信中的基础技术,它提供了两台计算机间低级别的连接。在Java中,Socket类和ServerSocket类是实现客户端-服务器通信的核心组件。本资源包含的是基于Java的Socket套接字编程的源代码...

    套接字编程的基本概念

    本文将深入探讨套接字编程的基本概念,包括套接字的定义、地址结构、套接字类型以及基本的套接字系统调用。 首先,我们要理解套接字编程中的几个核心概念。在套接字编程中,一个半相关(half-association)是由协议...

    网络套接字编程

    本文将深入探讨网络套接字编程的基本概念、相关函数以及在MFC(Microsoft Foundation Classes)框架下的实现方法。 首先,我们需要了解套接字的定义。套接字是网络通信中的一个抽象接口,它是两台计算机之间进行...

    套接字编程之聊天小工具

    本项目“套接字编程之聊天小工具”旨在为初学者提供一个实践平台,通过VC++编译环境,深入理解并掌握套接字编程的基本原理和应用。 首先,我们来探讨套接字的基本概念。套接字是操作系统提供的接口,允许应用程序...

    第5讲 数据报套接字编程与原始套接字编程.pdf

    ### 数据报套接字编程与原始套接字编程 #### 一、概述 在计算机网络领域,套接字(Socket)编程是一种重要的技术手段,它为应用程序提供了与网络进行交互的能力。套接字按照不同的标准可以分为多种类型,其中数据报...

    逆向套接字编程实验

    逆向套接字编程实验是计算机网络学习中的一个重要实践环节,主要目的是理解网络通信的基本原理,特别是客户端与服务器之间的交互过程。在这个实验中,我们将模拟客户端和服务器的行为,通过逆向工程来实现套接字编程...

    Windows套接字广播编程实例

    在Windows平台上进行套接...总的来说,"Windows套接字广播编程实例"是一个很好的起点,它帮助开发者掌握使用UDP套接字进行广播通信的基本技能。通过深入学习和实践,可以进一步理解和应用更复杂的网络编程概念和技术。

    UNIX网络编程 卷1:套接字联网API

    第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 I/O复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接字编程 第9章 基本SCTP...

    TCP套接字编程

    TCP 套接字编程 本文主要介绍了基于 TCP 套接字的文件传输客户服务器程序设计,通过实验实现了迭代服务器、并发服务器和使用单进程和 select 的 TCP 服务器,掌握了基于 TCP 套接口的网络程序设计和大规模文件传输...

    简单的套接字编程

    本文将详细讲解"简单的套接字编程",包括基础概念、服务端实现、客户端交互以及如何使用Python进行实际操作。 首先,我们要理解套接字的基本概念。套接字是操作系统提供的一种接口,用于在网络中实现进程间通信...

    基于Python进行TCP套接字编程的基础知识 实验报告

    熟悉基于Python进行UDP套接字编程的基础知识,掌握使用UDP套接字发送和接收数据包,以及设置正确的套接字超时,了解Ping应用程序的基本概念,并理解其在简单判断网络状态,例如计算数据包丢失率等统计数据方面的意义...

    socket 套接字 Java 套接字 编程

    Java套接字编程是网络通信的核心技术之一,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Java中的Socket编程,包括基本概念、工作原理、创建和使用Socket的过程,以及常见问题和解决策略。 1. 基本...

    C#中的套接字编程实例

    在C#中,套接字编程是实现网络通信的基础,特别是在TCP/IP协议栈上构建应用。C#提供了丰富的API来支持套接字编程,使得开发者能够轻松地创建客户端和服务器端应用程序。以下是对C#中套接字编程的详细解释。 首先,...

    java套接字编程笔记

    Java套接字编程是网络通信的核心技术之一,它允许两个应用程序通过网络进行数据交换。在Java中,套接字(Socket)是实现客户端-服务器模型通信的基础,它提供了低级别的、面向连接的、可靠的字节流服务。这篇笔记将...

    UNIX网络编程卷1:套接字联网API(第3版)part1 共2部分

    第二部分 基本套接字编程 第3章 套接字编程简介 第4章 基本TCP套接字编程 第5章 TCP客户/服务器程序示例 第6章 IO复用:select和poll函数 第7章 套接字选项 第8章 基本UDP套接字编程 第9章 基本SCTP套接字...

Global site tag (gtag.js) - Google Analytics