社区
C++ Builder
帖子详情
CAsyncSocket Listen Accept Connect
ai454121
2012-03-29 07:21:42
Q1: Listen 监听端口后如果有请求是系统自动调用Accept还是得自己调用这函数?
q2: Connect怎么总是连接不对啊?
if(m_sockConnect.Connect(lpIP,3333)!=0)
m_szRecv = "连接成功..." ;
UpdateData(FALSE) ;
...全文
69
2
打赏
收藏
CAsyncSocket Listen Accept Connect
Q1: Listen 监听端口后如果有请求是系统自动调用Accept还是得自己调用这函数? q2: Connect怎么总是连接不对啊? if(m_sockConnect.Connect(lpIP,3333)!=0) m_szRecv = "连接成功..." ; UpdateData(FALSE) ;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我不懂电脑
2012-03-30
打赏
举报
回复
Q1: Listen 监听端口后如果有请求是系统自动调用Accept还是得自己调用这函数?
得自己调用
q2: Connect怎么总是连接不对啊?
if(m_sockConnect.Connect(lpIP,3333)!=0)
m_szRecv = "连接成功..." ;
UpdateData(FALSE) ;
看ip 端口对不?
ai454121
2012-03-30
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
Q1: Listen 监听端口后如果有请求是系统自动调用Accept还是得自己调用这函数?
得自己调用
q2: Connect怎么总是连接不对啊?
if(m_sockConnect.Connect(lpIP,3333)!=0)
m_szRecv = "连接成功..." ;
UpdateData(FALSE) ;
看ip 端口对不?
[/Quote]
Q1 是监听后就立马调用还是?它调用后是一直等待请求还是只是检查一下?
Q2 : IP端口对着呢,都是3333
C++
socket
编程
c++的
socket
编程基础案例。
Socket
相关的操作由一系列API函数来完成,比如
socket
、bind、
list
en
、
connect
、
accept
、s
en
d、s
en
dto、recv、recvfrom等。调用这些API函数有一定的先后次序,有些函数的参数还比较复杂,对于开发者来说,不是很好用。于是,微软的MFC提供了两个类:
CA
sync
Socket
和C
Socket
,极大地方便了
Socket
功能的使用
MFC网络编程之自制浏览器
网络编程,当然要用到Windows
Socket
(套接字)技术。
Socket
相关的操作由一系列API函数来完成,比如
socket
、bind、
list
en
、
connect
、
accept
、s
en
d、s
en
dto、recv、recvfrom等。调用这些API函数有一定的先后次序,有些函数的参数还比较复杂,对于开发者来说,不是很好用。于是,微软的MFC提供了两个类:
CA
sync
Socket
和C
Socket
,极大地方便了
Socket
功能的使用。
CA
sync
Socket
类在较低层次上封装了Windows
Socket
API,并且通过内建一个(隐藏的)窗口,实现了适合Windows应用的异步机制(Windows
Socket
API默认情况下工作在阻塞模式,不方便直接在消息驱动的Windows程序上使用)。C
Socket
类从
CA
sync
Socket
类派生,进一步简化了
Socket
功能的应用。不过很遗憾,正因为这两个类都内建了一个窗口,它们并不是线程安全的(thread-safe);如果要在多线程环境下应用
Socket
功能,建议自行封装
Socket
API函数。 基于TCP的
socket
编程的服务器端程序流程如下: 1、创建套接字 2、将套接字绑定到一个本地地址和端口号上(bind) 3、将套接字设为监听模式,准备接受客户请求(
list
en
) 4、等待客户请求,请求到来时接受请求,建立链接,并返回 一个新的基于此次通信的套接字(
accept
) 5、用返回的套接字和客户端进行通信(s
en
d、recv) 6、返回,等待另一客户请求 7、关闭套接字 基于TCP的
socket
编程的客户端程序流程如下: 1、创建套接字 2、向服务器端发送请求(
connect
) 3、和服务器端进行通信(s
en
d、recv) 4、关闭套接字 基于UDP的
socket
编程的服务器端程序流程如下: 1、创建套接字 2、将套接字绑定到本地地址和端口号上(bind) 3、等待接收数据(recvfrom) 4、关闭套接字 基于UDP的
socket
编程的客户端程序流程如下: 1、创建套接字 2、和服务器端进行通信(s
en
dto) 3、关闭套接字 异步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而同步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。 阻塞套接字是指执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直挂在recv()这个函数调用上,直到读到一些数据,此函数调用才返回;而非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的。 对于这些概念,初学者的理解也许只能似是而非,我将用一个最简单的例子说明异步非阻塞
Socket
的基本原理和工作机制。目的是让初学者不仅对
Socket
异步非阻塞的概念有个非常透彻的理解,而且也给他们提供一个用
Socket
开发网络通信应用程序的快速入门方法。操作系统是Windows 98(或NT4.0),开发工具是Visual C++6.0。 MFC提供了一个异步类
CA
sync
Socket
,它封装了异步、非阻塞
Socket
的基本功能,用它做常用的网络通信软件很方便。但它屏蔽了
Socket
的异步、非阻塞等概念,开发人员无需了解异步、非阻塞
Socket
的原理和工作机制。因此,建议初学者学习编网络通信程序时,暂且不要用MFC提供的类,而先用Winsock2 API,这样有助于对异步、非阻塞
Socket
编程机制的理解。
MFC之
CA
sync
Socket
详解
客户端套接字对象请求链接到服务器套接字对象 使用流式套接字需要事先建立客户端和服务器之间的连接,然后才能进行数据传输。在服务器套接字对象已经进入监听状态之后,客户端应用程序可以调用
CA
sync
Socket
类的
Connect
向服务器发出一个连接请求,如果服务器接收了这个连接请求,两端的链接请求就建立了起来,否则,该成员函数将返回FALSE
CA
sync
Socket
::Co
MFC
CA
sync
Socket
MFC
CA
sync
Socket
由于都是直接利用动态连接库wsock32.dll进行操作,实现比较繁琐。其实,为简化套接字编程,MFC 定义了两个套接字类:
CA
sync
Socket
、C
Socket
。
CA
sync
Socket
类在低层次上对 Windows
Socket
s API 进行了封装,其成员函数和 Windows
Socket
s API 函数直接相对应 。一个
CA
sync
Sock
CA
sync
Socket
类介绍
WinSock类 在Visual C++的MFC类库中,提供了两个与WinSock相关的类,分别为
CA
sync
Socket
类和C
Socket
类。这两个类对WinSock API进行了封装,使得开发Windows
Socket
应用程序变得简单了。本节将针对
CA
sync
Socket
介绍Windows
Socket
应用程序的开发。
CA
sync
Socket
类介绍
CA
sync
Socket
类对WinSoc...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章