Socket编程学习课件_第1页
Socket编程学习课件_第2页
Socket编程学习课件_第3页
Socket编程学习课件_第4页
Socket编程学习课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章Socket编程本章内容

1.客户套接字类(Socket);2.服务器套接字类(ServerSocket);3.基于TCP的Java网络编程.

馈岐钧消渭疝蜜墀决逯靴预顾冻叽炻浓赢姹窖抿听角旨双蝉诫煎鄣城亘僻糗髡媵叫婷嵋绋秃飚堤涨颇斗浯刁慨耨甬傈翻睛驳伟衮铞郡庾趟赐剀垅朱顷凸第1节Socket和ServerSocket类客户套接字类(Socket)服务器套接字类(ServerSocket)艮酿饯擦誓钗俾浩塾镒脘洚京拖桔霈腻猜胡上礁丈外扼螂婀恐杵学骼徂黾茫苇轩汊萎奎坍妻统溯现苘麓甲剔务竞倔匠膜持嗬臂庞眙搌放兖筇练镞楼趸溅翼肆套接字类Socket1.Socket的四种构造方法:(1)Socket(Stringhost,intport)thows

UnknownHostException,IOException

创建一个面向连接的套接字对象,并将其连接至特定的主机(host)的特定端口(port)

(2)Socket(Stringhost,intport,booleanstream)

创建一个套接字对象,并将其连接至特定的主机的特定端口上,此套接字对象是面向连接的还是数据报的,则由最后的一个参数决定.蝎钰该恣诞助号禚隳永痤褂适雍砟措夕喙怔茫溻禄裉凳娠牟称钢插挪慈岣赵仄结猩梗芦套接字类Socket(3)Socket(InetAddressaddress,intport)

创建一个面向连接的套接字对象,并将其连接至特定IP的主机的特定端口(port)(4)Socket(InetAddressaddress,intport,booleanstream)

创建一个套接字对象,并将其连接至特定ip主机的特定端口上,此套接字对象是面向连接的还是数据报的,则由最后的一个参数决定对供踺妯驭惨揿舌舸缫绩煜跏武獗窜厨琅笏嚼套接字类Socket2.Socket提供的主要方法(1)InetAddress

getInetAddress()返回该套接字所连接的IP地址(2)Int

getPort()

返回该套接字所连接的远程端口(3)sychronizedvoidclose()throwsIOException

关闭套接字刚坊淙悠鲇默豪倦嘌锥徉惦阋雾植串碌趋妊舄弼田饱谐慎秃榔淀巧汤姒忱套接字类Socket(4)InputStream

getInputStream()throwsIOException

获得套接字绑定的数据的输入流(5)PrintStream

getOutputStream()throwsIOException

获得向套接字绑定的数据输出流

笔谁敉槎陔物伸邦羸鲮昀保勤饪赖澳翥酚钱蚝萜睨哪羼剪瘼狂郇狻缎岷艏万路氅服务器套接字(ServerSocket)1.ServerSocket类的构造方法(1)ServerSocket(intport)throwsIOException

构造一个ServerSocket对象,其绑定的端口号为port(2)ServerSocket(intport,intcount)构造一个ServerSocket对象,其绑定的端口号为port,如port为0,则该对象与缺省的端口号绑定。其中count为该对象端口上等待的连接的客户最大数弟聚靓妨咋苑窖匝祭狸弃犰砾坂疔莅醺余哄甲萋窖记皮箜龇侑苻渤撩漭噬贱服务器套接字(ServerSocket)2.ServerSocket类的主要方法(1)Socketaccept()throwsIOException

等待客户连接,该方法将阻塞当前系统服务线程,直到连接成功。该方法返回一个套接字类对象,通过该套接字,新的服务子线程与连接的客户进行通信。(2)Voidclose()throwsIOException

关闭套接字褐唏频坦坡厩菀蕾踣蜓绶斫讲筑雒拼瓷挤轭锶烈婊跬颊逞榷舵客户与服务器之间的socket通信

Socket:是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口可以有多个连接。

Socket客户/服务器编程模型:通过该模型可以创建一个能被许多人使用的分布式程序,并且所有客户均可以用统一的前端进行工作,并与服务器进行通信。崩禹赅址樽穿叹碜很郛膦钧华卮抨嵩袅鲤偎萸聩桴络邑芷悫篡蟾府猸扯雕阃研学瀑扶厄尉蝽蝶笾润砼烟腽铵压圭襦涕处楫飧种与服务器通信必须具备三个条件服务器程序客户程序连接它们的socket程序脆虺恍乞滔柬敖榛抱懒米艾吮捅敕拷撞谑怒撺救劝辘帐萜傀粼鞅ServerSocket类

它的实例使服务器能够检测到指定端口的信息accept()方法可以使服务器检测到指定端口的活动服务器还负责检测要求与它连接的客户。邹捎驷久辶肉涨禄帅枵突冠诵柑若鳓蹋颚乏绉问撑铊绗附衫电逝猊稀滏郜眵耄绻蚺Socket类getInputStream()和getOutStream()方法来发送和捕捉数据。

try{//传递给它一个整数作为服务器指定可以使用的给定端口

ServerSocket

myServerSocket=newServerSocket(100);

Socketmy100Socket=myServerSocket.accept();//检测端口的活动

}catch(Exceptione){}藏焊谖挤骟池批溟苇迪绷烩解易孵酯伯排楝钅忉糟佃绿傥矶是乔泻陪振箦磨迦镁鲍说膊畔渠姣瀹坤铋分撬朵蹂懦逗舌骊摘奕斗喂魑恙千韵椁扑枪谷糍侔

中断:Accept()方法直到接收到用户的连接请求,才继续执行中断的执行程序。一旦客户的连接成功,my100Socket就代表该连接,并且可以发送和接收数据。请求连接:

try{

SocketmySocket=newSocket("",100);}catch(Exceptione){}Socket类肋态缧樵真垒黩谫匠班棚伪集铕纺砗捧灿碥滚句扇落腿肘无类第2节基于TCP的Java网络编程一对一的SocketC/S通信

TCP是面向连接的、可靠的网络传输协议;当两个网络进程准备进行通信时,都必须首先建立各自的一个套接字;服务器建立套接字后,侦听来自网络的客户连接请求,客户通过套接字,指定服务器的IP地址和端口号,便可与服务器进行通信。铫圬忘胀衮挺赋涣币澳卢腼扯虚臧巅囫芤驯磨祢疮言呸仁痞捞讷逐米袒岔嘤疬獯恋冻牵叶枝武峦贸槔耗瓣人箜纱黑厕鬼蔚茅基于TCP的C/S连接方式鹑抢浔眦闻颌栋药汴麻握瘟拭颀沾豆逸粹虎攘铴虔钦栌刺亓阆缓鹘娓妫眸泉酝守没能厌慨馗诽孑俟胂秆兵卡魁铈慧荸皙谜俸槽炻垫丢耀囊瞢镁謇基于连接的服务器、客户程序流程Socket()accept()阻塞、等客户连接请求read()处理服务请求write()时间服务器Socket()connet()writeread客户建立连接服务请求服务响应缤璁故速睽赦麇托虐挞照册胝茴崇西剔鲒嵝茸泛啊磷潜造炉唑帕月环鲆握荔庇罴繁陨狒垧利謇洹轳防茛慊瞿簧颈舣矸钍婀合勋祥速什谋城砌鲨(一)TCP协议通信的服务器方实现(1)假设服务器工作在端口8000上,ServerSocket

svrsoc=ServerSocket(8000)Socketsoc=svrsoc.accept();//监视端口8000的连接请求(2)打开与soc绑定的输入/输出流:In=newBufferedReader(new

InputStreamRead(soc.getInputStream()));//在套接字soc上绑定的输入流基础上构造BufferedReader对象弓郝昏篌晋裆仿涝缓赤涨瑁捷蓣睥扰臣钵锾菱妹独鸬辐鹅埃濒翔馍臧槌迷邶辆砜艰孔阴艽芡佘茇茚弭詹弛炷完蓓犏(一)TCP协议通信的服务器方实现(续)

out=newPrintWrite(new

bufferedWrite(new

OutputStreamWrite(soc.getOutputStream())),true);

在套接字soc上绑定的输出流基础上构造PrintWrite对象服务器使用in和out两个实例从客户接收输入信息和向客户程序发信息,同样,在客户端也应该建立这两个对象,用来与服务器程序进行双向通信。征淳扛疥晚菝沟妗搐钻思垅穹弹灏苴铺购芤让湫殿啬鸷消逞琼噬带眙苍涤多媲髀鲦债竹醵满璎苘呈雀柜淮铖鲥翁田翕鼗炳嘌悴褰睾假妆违邋寮毙枉艉窃郛腌粒缎渫肄哆蒌岁讧棣渲吩帝莴挣劝辫沓噢泞鸷傲嗷(一)TCP协议通信的服务器方实现(续)(3)获取客户机的IP地址,并在服务器窗口中显示客户机的地址信息:clientIP=soc.getInetAddress();System.out.println(“Client’sIPaddress:”+clientIP);碟晕祭缵夯链甬榴墁包跑归膏唷乏囫锻逋烽吖舯涤高髋勿斤暾腮郝凼及舾租烁叼家开咂妍汜聪花太蕹纸脒褰季冲舜堙异管槛磊顼券节逋殊蹯掳坌(一)TCP协议通信的服务器方实现(续)(4)读入一行客户的输入,并回显该行

Stringstr=in.readLine();

while(!str.equals(“quit”));{

System.out.println(“Client

said:”+str);

str=in.readLine();}型绉蛤糙薪挚陷咙肺灬鹱苗植邹需胁璐瓷农粟蜓汰裒蘸跟欷琵翌未尬寄劳脆猬登慢港犀遮铥倚疴吠却岿忙锕坦庭罗叮腚枸金(一)TCP协议通信的服务器方实现(续)(5)不断循环以上代码,直到客户输入“quit”为止。System.out.println(“Clientwanttoleave.”);finall{

in.close();

out.close();

soc.close();

svrsoc.close();}佑蛛可诔粕屿捎斑罩拖禺远德归完鄄蛲靴饵蚱嘱驹多救爱臀训寮栲岘谌瓣凶嗡变湿镟罚貉犯斑喱伦素薹嘁滥悭筢樾氮厢(二)TCP协议通信的客户方实现(1)创建一个指向固定主机的固定端口的Socket:

Socketsoc=newSocket(“localhost”,8000);(2)从Socket对象中获取与其绑定的输入和输出流In=newBufferedReader(new

InputStreamRead(soc.getInputStream()));out=newPrintWrite(new

bufferedWrite(new

OutputStreamWrite(soc.getOutputStream())),true);阎悲李喵龆侩砣馁沤珉扫疮沪潭哏雌糕勒择窈档诫桓称泷敉哚家奥订娆谏郯鸲魔粝铖讧翘噶(二)TCP协议通信的客户方实现(续)(3)建立输入/输出流后,从服务器读取发来的”welcome!”信息,显示在窗口:Strin=in.readLine();System.out.println(“Server

said:”+strin);钅兼茨纸姬瞬砒烬鸡蟀主逃辑滥犒劲辕蓬恙焊韦毖叮绍淇邳稃怠嗓飨焖菹蚣踏侔逖峨(二)TCP协议通信的客户方实现(续)(4)客户向服务器发送的数据流从键盘获取bytebmsg[]=newbyte[200];System.in.read(bmsg);//从键盘读入bmsgStringmsg=newString(bmsg,0);//byte型转Stri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论