完成后的效果:
图11与连个客户端连接完成
图12与1921681106:2632发送消息
图13与1921681106:2633发送消息
f功能:服务器首先监听是否有客服端请求连接,如果有则建立连接,然后服务器可选择任一客户端发送消息,否则继续监听。由功能可以看出这是面向连接的TCP套接字的编程,既需要对服务器和客服端分别编程。注意编写该软件的目的主要是对套接字编程的简单掌握,至于软件的美观设计自己可进行相应的调整。
分析服务器端开发流程:1)创建一个套接字。2)创建本地IPE
dPoi
t对象。3)使用Bi
d方法将所创建的套接字与本地IPE
dPoi
t绑定。4)使用Liste
方法设置套接字为监听模式。5)使用Accept方法接收客户端连接请求,并为客户端创建一个客户端套接字。一旦建立了客服端套接字,就可以和请求连接的客服端进行数据传送了。
分析客户端开发流程:1)创建一个套接字。2)使用Socket类的Co
ect方法将套接字与远程服务器地址相连。
以下是服务器端完整代码附带有具体注释:summary功能:简单聊天室版本:v10作者:苏嗣典日期:20111209summaryusi
gSystemusi
gSystemCollectio
sGe
ericusi
gSystemCompo
e
tModelusi
gSystemDatausi
gSystemDrawi
gusi
gSystemLi
qusi
gSystemTextusi
gSystemWi
dowsFormsusi
gSystemNetSocketsusi
gSystemThreadi
gusi
gSystemNet
f
amespaceServerpublicpartialclassServerFormpublicServerI
itializeCompo
e
tRichTextBoxCheckForIllegalCrossThreadCallsfalse对跨线程不处理拓展知识:套接字用来描述IP地址和端口,是通信链的句柄,其实就是用于两个进程间通信的。Socketsocket_Server
ull定义一个套接字接口对象,并初始化值为空ThreadmyThread
ull定义一个线程对象,并初始化值为空Socketsocket_Co
et
ull用于与客户端连接Dictio
arystri
gSocketdic
ewDictio
arystri
gSocket定义一个集合,存储客户端信息stri
gRemoteE
dPoi
t客户端的网络结点privatevoidbutto
StartListe
_Clickobjectse
derEve
tArgsesocket_Server
ewSocketAddressFamilyI
terNetworkSocketTypeStreamProtocolTypeTcp
ew一个Socket对象,注意这里用的是流式Socket针对于面向连接的TCP服务应用而不是数据报式Socket针对于面向无连接的UDP服务应用。stri
gIPtextBoxIPTextTrimIPAddressServerIPIPAddressParseIP提取IP地址i
tporti
tParsetextBoxPortTextTrimport是端口号IPE
dPoi
tpoi
t
ewIPE
dPoi
tServerIPportpoi
t为网络结点对象socket_ServerBi
dpoi
t将结点绑定到套接字上socket_ServerListe
10设置连接队列的最r