getsockoptsocket的send()方法的发送目的地址放在哪个参数里面?

getsockopt  时间:2021-08-02  阅读:()

求VC++中的头文件Afxcsock.h

直接给你吧,保存为Afxsock.h 不是Afxcsock.h 路径是 在VC98MFCINCLUDE // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1998 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #ifndef __AFXSOCK_H__ #define __AFXSOCK_H__ #ifdef _AFX_NO_SOCKET_SUPPORT #error Windows Sockets classes not supported in this library variant. #endif #ifndef __AFXWIN_H__ #include #endif #ifndef _WINSOCKAPI_ #include #endif #ifdef _AFX_MINREBUILD #ponent(minrebuild, off) #endif #ifndef _AFX_FULLTYPEINFO #ponent(mintypeinfo, on) #endif #ifndef _AFX_NOFORCE_LIBS ///////////////////////////////////////////////////////////////////////////// // Win32 libraries #ifdef _AFXDLL #if defined(_DEBUG) && !defined(_AFX_MONOLITHIC) #ifndef _UNICODE #ment(lib, "42d.lib") #else #ment(lib, "42ud.lib") #endif #endif #endif #ment(lib, "wsock32.lib") #endif //!_AFX_NOFORCE_LIBS ///////////////////////////////////////////////////////////////////////////// #ifdef _AFX_PACKING #pragma pack(push, _AFX_PACKING) #endif ///////////////////////////////////////////////////////////////////////////// // AFXSOCK - MFC support for Windows Sockets // Classes declared in this file // CObject class CAsyncSocket; // Async Socket implementation and // base class for Synchronous Socket class CSocket; // Synchronous Socket // CFile class CSocketFile; // Used with CSocket and CArchive for // streaming objects on sockets. ///////////////////////////////////////////////////////////////////////////// // AFXDLL support #undef AFX_DATA #define AFX_DATA AFX_NET_DATA ///////////////////////////////////////////////////////////////////////////// // CSocketWnd -- internal use only // Implementation for sockets notification callbacks. // Future versions of MFC may or may not include this exact class. class CSocketWnd : public CWnd { // Construction public: CSocketWnd(); protected: //{{AFX_MSG(CSocketWnd) LRESULT OnSocketNotify(WPARAM wParam, LPARAM lParam); LRESULT OnSocketDead(WPARAM wParam, LPARAM lParam); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// // CAsyncSocket class CAsyncSocket : public CObject { DECLARE_DYNAMIC(CAsyncSocket); private: CAsyncSocket(const CAsyncSocket& rSrc); // no implementation void operator=(const CAsyncSocket& rSrc); // no implementation // Construction public: CAsyncSocket(); BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL); // Attributes public: SOCKET m_hSocket; operator SOCKET() const; BOOL Attach(SOCKET hSocket, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE); SOCKET Detach(); BOOL GetPeerName(CString& rPeerAddress, UINT& rPeerPort); BOOL GetPeerName(SOCKADDR* lpSockAddr, int* lpSockAddrLen); BOOL GetSockName(CString& rSocketAddress, UINT& rSocketPort); BOOL GetSockName(SOCKADDR* lpSockAddr, int* lpSockAddrLen); BOOL SetSockOpt(int nOptionName, const void* lpOptionValue, int nOptionLen, int nLevel = SOL_SOCKET); BOOL GetSockOpt(int nOptionName, void* lpOptionValue, int* lpOptionLen, int nLevel = SOL_SOCKET); static CAsyncSocket* PASCAL FromHandle(SOCKET hSocket); static int PASCAL GetLastError(); // Operations public: virtual BOOL ept(CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL); BOOL Bind(UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL); BOOL Bind (const SOCKADDR* lpSockAddr, int nSockAddrLen); virtual void Close(); BOOL Connect(LPCTSTR lpszHostAddress, UINT nHostPort); BOOL Connect(const SOCKADDR* lpSockAddr, int nSockAddrLen); BOOL IOCtl(long lCommand, DWORD* lpArgument); BOOL Listen(int nConnectionBacklog=5); virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0); int ReceiveFrom(void* lpBuf, int nBufLen, CString& rSocketAddress, UINT& rSocketPort, int nFlags = 0); int ReceiveFrom(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags = 0); enum { receives = 0, sends = 1, both = 2 }; BOOL ShutDown(int nHow = sends); virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0); int SendTo(const void* lpBuf, int nBufLen, UINT nHostPort, LPCTSTR lpszHostAddress = NULL, int nFlags = 0); int SendTo(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags = 0); BOOL AsyncSelect(long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE); // Overridable callbacks protected: virtual void OnReceive(int nErrorCode); virtual void OnSend(int nErrorCode); virtual void OnOutOfBandData(int nErrorCode); virtual void ept(int nErrorCode); virtual void OnConnect(int nErrorCode); virtual void OnClose(int nErrorCode); // Implementation public: virtual ~CAsyncSocket(); static CAsyncSocket* PASCAL LookupHandle(SOCKET hSocket, BOOL bDead = FALSE); static void PASCAL AttachHandle(SOCKET hSocket, CAsyncSocket* pSocket, BOOL bDead = FALSE); static void PASCAL DetachHandle(SOCKET hSocket, BOOL bDead = FALSE); static void PASCAL KillSocket(SOCKET hSocket, CAsyncSocket* pSocket); static void PASCAL DoCallBack(WPARAM wParam, LPARAM lParam); BOOL Socket(int nSocketType=SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, int nProtocolType = 0, int nAddressFormat = PF_INET); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: friend class CSocketWnd; virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen); virtual int ReceiveFromHelper(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags); virtual int SendToHelper(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags); }; ///////////////////////////////////////////////////////////////////////////// // CSocket class CSocket : public CAsyncSocket { DECLARE_DYNAMIC(CSocket); private: CSocket(const CSocket& rSrc); // no implementation void operator=(const CSocket& rSrc); // no implementation // Construction public: CSocket(); BOOL Create(UINT nSocketPort = 0, int nSocketType=SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL); // Attributes public: BOOL IsBlocking(); static CSocket* PASCAL FromHandle(SOCKET hSocket); BOOL Attach(SOCKET hSocket); // Operations public: void CancelBlockingCall(); // Overridable callbacks protected: virtual BOOL OnMessagePending(); // Implementation public: int m_nTimeOut; virtual ~CSocket(); static int PASCAL ProcessAuxQueue(); virtual BOOL ept(CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL); virtual void Close(); virtual int Receive(void* lpBuf, int nBufLen, int nFlags = 0); virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0); int SendChunk(const void* lpBuf, int nBufLen, int nFlags); protected: friend class CSocketWnd; BOOL* m_pbBlocking; int m_nConnectError; virtual BOOL ConnectHelper(const SOCKADDR* lpSockAddr, int nSockAddrLen); virtual int ReceiveFromHelper(void* lpBuf, int nBufLen, SOCKADDR* lpSockAddr, int* lpSockAddrLen, int nFlags); virtual int SendToHelper(const void* lpBuf, int nBufLen, const SOCKADDR* lpSockAddr, int nSockAddrLen, int nFlags); static void PASCAL AuxQueueAdd(UINT message, WPARAM wParam, LPARAM lParam); virtual BOOL PumpMessages(UINT Flag); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif }; ///////////////////////////////////////////////////////////////////////////// // CSocketFile class CSocketFile : public CFile { DECLARE_DYNAMIC(CSocketFile) public: //Constructors CSocketFile(CSocket* pSocket, BOOL bArchiveCompatible = TRUE); // Implementation public: CSocket* m_pSocket; BOOL m_bArchiveCompatible; virtual ~CSocketFile(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif virtual UINT Read(void* lpBuf, UINT nCount); virtual void Write(const void* lpBuf, UINT nCount); virtual void Close(); // Unsupported APIs virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL); virtual CFile* Duplicate() const; virtual DWORD GetPosition() const; virtual LONG Seek(LONG lOff, UINT nFrom); virtual void SetLength(DWORD dwNewLen); virtual DWORD GetLength() const; virtual void LockRange(DWORD dwPos, DWORD dwCount); virtual void UnlockRange(DWORD dwPos, DWORD dwCount); virtual void Flush(); virtual void Abort(); }; ///////////////////////////////////////////////////////////////////////////// // Global functions BOOL AFXAPI AfxSocketInit(WSADATA* lpwsaData = NULL); void AFXAPI AfxSocketTerm(); ///////////////////////////////////////////////////////////////////////////// // Inline function declarations #ifdef _AFX_PACKING #pragma pack(pop) #endif #ifdef _AFX_ENABLE_INLINES #define _AFXSOCK_INLINE AFX_INLINE #include #undef _AFXSOCK_INLINE #endif #undef AFX_DATA #define AFX_DATA #ifdef _AFX_MINREBUILD #ponent(minrebuild, on) #endif #ifndef _AFX_FULLTYPEINFO #ponent(mintypeinfo, off) #endif #endif // __AFXSOCK_H__ /////////////////////////////////////////////////////////////////////////////

C语言 send()函数理解

使用函数getsockopt获得发送缓冲区的长度。

用法如下: int sockfd; int val; int len; sockfd = socket (AF_INET, SOCK_STREAM, 0); len = sizeof (val); getsockopt( sockfd, SOL_SOCKET, SO_SNDBUF, &val, &len); printf ("sndbuf len=%d ", val); 在32位linux系统上发送缓冲区为16K ,可以使用setsockopt()修改,会影响网络性能

想用getsockopt取得当前socket的状态,但是第三个参数怎么设置啊。

选项 类型 意义 SO_ACCEPTCONN BOOL 套接口正在用listen()监听。

SO_BROADCAST BOOL 套接口设置为传送广播信息。

SO_DEBUG BOOL 允许调试。

SO_DONTLINER BOOL 若为真,则SO_LINGER选项被禁止。

SO_DONTROUTE BOOL 禁止选径。

SO_ERROR int 获取错误状态并清除。

SO_KEEPALIVE BOOL 发送“保持活动”信息。

SO_LINGER struct linger FAR* 返回当前各linger选项。

SO_OOBINLINE BOOL 在普通数据流中接收带外数据。

SO_RCVBUF int 接收缓冲区大小。

SO_REUSEADDR BOOL 套接口能和一个已在使用中的地址捆绑。

SO_SNDBUF int 发送缓冲区大小。

SO_TYPE int 套接口类型(如SOCK_STREAM)。

TCP_NODELAY BOOL 禁止发送合并的Nagle算法。

这些就足够了,自己选吧

socket的send()方法的发送目的地址放在哪个参数里面?

send是TCP通信的发送方法,在send之前保证建立了socket通信连接,socket中记录了与之连接的对方的地址,所以可以说是第一个参数SOCKET记录了要发往的地址;注:TCP套接字只能进行一对一的通信,所以不需要地址再来进行目的地的标识,套接字就可以确定要发往的方向; SOCKET Sock; Sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); connect(Sock,。













); char *buf; send(Sock,buf,strlen(buf),0); 其中就是Sock记录的你要发往的目的地; 只有UDP通信才要写入对方地址,UDP套接可以进行多对多的通信,所以在发送的时候要写入对方地址; UDP调用sendto()方法;可以查看MSDN

易速互联月付299元,美国独立服务器促销,加州地区,BGP直连线路,10G防御

易速互联怎么样?易速互联是国人老牌主机商家,至今已经成立9年,商家销售虚拟主机、VPS及独立服务器,目前商家针对美国加州萨克拉门托RH数据中心进行促销,线路采用BGP直连线路,自带10G防御,美国加州地区,100M带宽不限流量,月付299元起,有需要美国不限流量独立服务器的朋友可以看看。点击进入:易速互联官方网站美国独立服务器优惠套餐:RH数据中心位于美国加州、配置丰富性价比高、10G DDOS免...

HostKvm香港VPS七折:$5.95/月KVM-2GB内存/40GB硬盘/500GB月流量

HostKvm是一家成立于2013年的国外主机服务商,主要提供VPS主机,基于KVM架构,可选数据中心包括日本、新加坡、韩国、美国、俄罗斯、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。商家本月针对香港国际机房提供特别7折优惠码,其他机房全场8折,优惠后2G内存香港VPS每月5.95美元起,支持使用PayPal或者支付宝付款。下面以香港国际(HKGlobal)为...

A2Hosting三年付$1.99/月,庆祝18周年/WordPress共享主机最高优惠81%/100GB SSD空间/无限流量

A2Hosting主机,A2Hosting怎么样?A2Hosting是UK2集团下属公司,成立于2003年的老牌国外主机商,产品包括虚拟主机、VPS和独立服务器等,数据中心提供包括美国、新加坡softlayer和荷兰三个地区机房。A2Hosting在国外是一家非常大非常有名气的终合型主机商,拥有几百万的客户,非常值得信赖,国外主机论坛对它家的虚拟主机评价非常不错,当前,A2Hosting主机庆祝1...

getsockopt为你推荐
可以访问违规网站的浏览器电脑上浏览器的重要权限有哪些,比如有可以访问系统文件之类的权限吗?图像识别算法我想学习关于图像识别算法,但是讲到的数学知识我不太懂,希望大神们可以告诉我该怎么办。笛卡尔乘积笛卡尔乘积的运算性质sap是什么足疗,sap,指压都是什么boltzmann波尔兹曼常数的值是多少电视蚂蚁电视蚂蚁是不是不能用了?我在国外该怎样看奥运?diskgenius免费版给我发一个 DISKGenius恢复数据破解版的可以吗,或者其他破解版的也可以,只要能恢复数据,感激不尽,...赵锡成众生有罪,你我皆同谋。什么意思vrrp配置我准备做一个关于MSTP的配置,但是不知道如何去做,拓扑如下协亨为什么协亨的手机卖这么便宜~?
广东服务器租用 hawkhost rackspace 优key 免费ftp空间 空间打开慢 免费smtp服务器 警告本网站美国保护 韩国名字大全 股票老左 国外代理服务器软件 服务器监测 电信主机 独享主机 韩国代理ip photobucket 永久免费空间 申请免费空间 lamp什么意思 lamp架构 更多