`
grzrt
  • 浏览: 182776 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

socket中accept()函数的理解

 
阅读更多

如果客户端有连接请求,必须使用下述函数来接受客户端的请求。

SOCKET accept(

       SOCKET               s,

       struct sockaddr FAR  *addr,

       int FAR          *addrlen

);

    addr用于存放客户端的地址,addrlen在调用函数时被设置为addr指向区域的长度,在函数调用结束后被设置为实际地址信息的长度。本函数会阻塞等待知道有客户端请求到达。

  返回值是一个新的套接字描述符,它代表的是和客户端的新的连接,可以把它理解成是一个客户端的socket,这个socket包含的是客户端的ipport信息 。(当然这个new_socket会从sockfd中继承 服务器的ipport信息,两种都有了),而参数中的SOCKET   s包含的是服务器的ipport信息

  于是之后的send和recv函数中的fd都是指这个 new_fd,也就是
  int send(int new_fd, const void *msg, int len, int flags); 
  int recv(int new_fd, void *buf, int len, unsigned int flags);

  即参数其实都是目标fd(就是记录了客户端的信息 ),说明服务器是从客户端接收或者发送给客户端的。这个和文件的操作FILE *fp =fopen();   fwrite(fp,xx,xx,xx);是差不多的,这里的fp代表的也是目标即目标文件名。

  这样,客户端的 connect函数 ,
  int connect (int sockfd, struct sockaddr *serv_addr, int addrlen);
  这里的sockfd 就把客户端的ip和port  ,服务器的ip和port信息都有了。所以之后的 send(),recv()都有信息了。

   ----------------------------------------------------------------------------------------------------------------------------------------------------------

  accept()函数 
  准备好了,系统调用   accept()   会有点古怪的地方的!你可以想象发生   这样的事情:有人从很远的地方通过一个你在侦听   (listen())   的端口连接   (connect())   到你的机器。它的连接将加入到等待接受   (accept())   的队列   中。你调用   accept()   告诉它你有空闲的连接。它将返回一个新的套接字文   件描述符!这样你就有两个套接字了,原来的一个还在侦听你的那个端口,   新的在准备发送   (send())   和接收   (   recv())   数据。这就是这个过程! 

分享到:
评论

相关推荐

    关于SOCKET中的accept函数的解释

    关于SOCKET中的accept函数的解释,可以让你更清楚的了解SOCKET编程

    网络编程socket之accept函数

    对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。它从内核中取出已经建立的客户连接,然后把这个已经建立的连接返回给用户程序,此时用户程序就可以与...

    Linux Socket编程(附实例)

    3.4、accept()函数 3.5、read()、write()函数等 3.6、close()函数 4、socket中TCP的三次握手建立连接详解 5、socket中TCP的四次握手释放连接详解 6、一个例子(实践一下) 7、留下一个问题,欢迎大家回帖回答!!!

    python 实现socket通信实例之client.py

    因此socket在使用时也是完全符合这个哲学的,它涉及到listen()、bind()、accept()、write()/read()、close()等基本的类似于文件操作的功能函数。 上述Socket功能函数是从传输层协议TCP或者UDP中抽象出来的,一个基本...

    网络编程 socket函数

    体验并掌握Winsock流式编程中常用函数(如socket(),bind(),listen(),accept(),connect(),recv(),send()等)的用法;体验并掌握Winsock流式程序设计的一般方法;

    socket编程中select的使用

    socket编程中select的使用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来 说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式 block,...

    详解C语言中accept()函数和shutdown()函数的使用

    C语言accept()函数:接受socket连线 头文件: #include <sys> #include 定义函数: int accept(int s, struct sockaddr * addr, int * addrlen); 函数说明:accept()用来接受参数s 的socket 连线. 参数s 的...

    C++开发基于TCPsocket实现的web服务器源码.zip

    4、当有连接到来时,调用accept函数,将客户端套接字与服务器套接字组成新的会话,并将会话添加到会话socket队列session中(用list实现); 5、从session中取出会话,接收并按照http协议分析客户端的请求报文,根据...

    socket套接字编程

    1、熟悉socket编程接口,初步掌握用socket编程接口开发面向连接的网络应用程序的方法,并且能较好的理解、掌握...4、掌握socket地址及其操作并且掌握socket的基本函数如socket、bing、listen、accept、send、receive等

    c语言socket编程指南

    11) accept()函数 12) send()和recv()函数 13) sendto()和recvfrom()函数 14) close()和shutdown()函数 15) getpeername()函数 16) gethostname()函数 17) 域名服务(DNS) 18) 客户-服务器背景知识 19) ...

    linux网络编程常用函数详解与实例(socket--bind--listen--accept)(.doc

    linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    C语言SOCKEt编程指南.rar

    11) accept()函数 12) send()和recv()函数 13) sendto()和recvfrom()函数 14) close()和shutdown()函数 15) getpeername()函数 16) gethostname()函数 17) 域名服务(DNS) 18) 客户-服务器背景知识 ...

    基本socket编程

    基本socket编程知识,包括: socket地址结构、字节排序和操纵 socket相关函数的用途和使用 基本TCP socket函数概述、TCP... connect/bind/listen/accept函数 TCP并发服务器/fork和exec函数 TCP客户-服务器程序举例

    Linux-socket编程指南

    11) accept()函数 12) send()和recv()函数 13) sendto()和recvfrom()函数 14) close()和shutdown()函数 15) getpeername()函数 16) gethostname()函数 17) 域名服务(DNS) 18) 客户-服务器背景知识 19) ...

    wayne-jin#fastrun#socket基本API2

    1.socket函数 3.connect函数 4.listen函数 5.accept函数 1.调用socket()函数创建对应的套接字类型 2.调用bind()

    计算机网络 python socket通信

    Python中的socket通信是一种在计算机网络中实现进程间通信的方法。它基于套接字(socket)API,通过TCP或UDP协议在网络上建立连接并传输数据。 以下是使用Python的socket库进行通信的一般步骤和描述: 创建套接字...

    socket教程

    11) accept()函数 12) send()和recv()函数 13) sendto()和recvfrom()函数 14) close()和shutdown()函数 15) getpeername()函数 16) gethostname()函数 17) 域名服务(DNS) 18) 客户-服务器背景知识 19) ...

    socket和TCP之间的关系

    Socket API提供了一些基本的接口函数,如socket()、bind()、connect()、listen()、accept()、send()、recv()等,这些函数可以方便地实现TCP连接的建立和数据传输等操作。 具体来说,应用程序在使用Socket API进行...

    C++socket编程_socket编程_splitbnd_socket_Listen!_c++socket编程_

    网络编程,当然要用到Windows Socket(套接字)技术。Socket相关的操作由一系列API函数来完成,比如socket、bind、listen、connect、accept、send、sendto、recv、recvfrom等。

Global site tag (gtag.js) - Google Analytics