你的位置:pcMing工作室 >> 资讯 >> 编程开发 >> C++编程 >> 详细内容 在线投稿

TCP/IP Winsock编程要点(转天极网)

排行榜 收藏 打印 发给朋友 举报 来源: 互联网   发布者:未知
热度2152票  浏览286次 【共0条评论】【我要评论 时间:2010年4月08日 20:29

\i9b5d NMcx&e!i0
(_^A+d\ QO0  6、服务方同一端口多IP地址的bind和listen
P+f]4x*`VPBT0pcMing工作室t%{P3n;m
  在可靠性要求高的应用中,要求使用双网和多网络通道,再服务方很容易实现,用如下方式可建立客户对本机所有IP地址在端口3024下的请求服务。
!y9c^c K$f{XXBe3Eh0
!}0cY$g W~7x1B^0
SOCKET hServerSocket_DS=INVALID_SOCKET;
~'e6Lk6N.D2N4E4E?6~0
C,i R^!u#@0struct sockaddr_in HostAddr_DS;//服务器主机地址
[I0_6kq0
E{B)x DxT0LONG lPort=3024; pcMing工作室TBtoi
pcMing工作室oGEYhdx/t
HostAddr_DS.sin_family=AF_INET; pcMing工作室g5aQ$^.X ~Z
pcMing工作室 v YE5A:Go)W0\V
HostAddr_DS.sin_port=::htons(u_short(lPort)); pcMing工作室ol!?8S8}W]

n$BYu?6v0HostAddr_DS.sin_addr.s_addr=htonl(INADDR_ANY); pcMing工作室 m)~7cP I*EE

] tSJ} r0hServerSocket_DS=::socket( AF_INET, SOCK_STREAM,IPPROTO_TCP); pcMing工作室S%@R;V}U"W*h0^a
pcMing工作室(q"h[;} R s\9q
if(hServerSocket_DS==INVALID_SOCKET)
9A4l7F?U*c(eQ0pcMing工作室&H&qc5i&N
{
O(C*bD?cj!B0
C g V}i0AfxMessageBox("建立数据服务器SOCKET 失败!");
.G4nP;E'L*S0pcMing工作室6{a}@iP B&j ll
return FALSE;
bomn`"x3I-OA H0pcMing工作室'NTP$g&n.G)n
} pcMing工作室HuS!ri"M

(p@Oo#E0if(SOCKET_ERROR==::bind(hServerSocket_DS,(struct
-@!j+Y&i7Q1B-\0
/}+T3m `*vni0sockaddr *)(&(HostAddr_DS)),sizeof(SOCKADDR)))
x#\_,Gwg ]0pcMing工作室 gShaesz
{
Q"s1zvGf lB0pcMing工作室3^*\[D'`r6T)\
int nErrorCode=WSAGetLastError (); pcMing工作室}&^ Lk d-]

,s2Vt.K h _JVj0TRACE("bind error=%d\n",nErrorCode); pcMing工作室])~7]0n.qBx
pcMing工作室]wV){n5C
AfxMessageBox("Socket Bind 错误!");
KY6n6`"e'cC0pcMing工作室1~$nm"qflE
return FALSE;
|n J^Vv0
`;Fq0d!Cq_{0}
o |^)x'W;e(V!D0pcMing工作室COw hl+R.J"G
if(SOCKET_ERROR==::listen(hServerSocket_DS,10))//10个客户
}9py}1B1b8` v0
A%q"F w)az,h X7\I0{ pcMing工作室1N0h5U9W}$K$H#v

V%FYhp#F |0AfxMessageBox("Socket listen 错误!"); pcMing工作室(j)W*R2a0M

{!| i? mu)P.q0return FALSE; pcMing工作室 l2RM0p5v3`w
pcMing工作室 C(v:@4Xc8s
} pcMing工作室 T5__ M.ca ?8A

6V9V5S/K$Ny ywO)\ Ng `0AfxBeginThread(ServerThreadProc,NULL,THREAD_PRIORITY_NORMAL);
pcMing工作室dG:?mW+v/Y%y l7pm#u-t
  在客户方要复杂一些,连接断后,重联不成功则应换下一个IP地址连接。也可采用同时连接好后备用的方式。
qk2Q#T!M(@Z [!ih.?,h!h0
v/O{#[5fs.q0  7、用TCP/IP Winsock实现变种Client/Server pcMing工作室dI1E#E1n {-F,L

2wi$A;o~1C0  传统的Client/Server为客户问、服务答,收发是成对出现的。而变种的Client/Server是指在连接时有客户和服务之分,建立好通信连接后,不再有严格的客户和服务之分,任何方都可主动发送,需要或不需要回答看应用而言,这种方式在工控行业很有用,比如RTDB作为I/O Server的客户,但I/O Server也可主动向RTDB发送开关状态变位、随即事件等信息。在很大程度上减少了网络通信负荷、提高了效率。
!` j#T)Oi0
0HPkK2Y1^1Q2h0  采用1-6的TCP/IP编程要点,在Client和Server方均已接收优先,适当控制时序就能实现。
顶:103 踩:108
对本文中的事件或人物打分:
当前平均分:-0.04 (697次打分)
对本篇资讯内容的质量打分:
当前平均分:-0.18 (653次打分)
【已经有591人表态】
92票
感动
72票
路过
65票
高兴
56票
难过
64票
搞笑
71票
愤怒
81票
无聊
90票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源