《Socket套接字》PPT课件.ppt_第1页
《Socket套接字》PPT课件.ppt_第2页
《Socket套接字》PPT课件.ppt_第3页
《Socket套接字》PPT课件.ppt_第4页
《Socket套接字》PPT课件.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

第六章TCPSocket套接字,关键字,TCP:TransmissionControlProtocol传输控制协议;套接字:简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程,由IP和PORT组成;Socket和ServerSocket:Java中关于TCPSocket的两个类,分别用于客户端连接和服务器监听。,本章内容,1.套接字2.Windows下端口查看3.Java下的Socket,6.1套接字,套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程;区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。,TCP/IP层次结构,TCP/IP协议中提出了端口(port)的概念,用于标识网络主机上通信的进程。端口实际上是一个抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(进程)通过系统调用与某端口建立关联(binding)后,传输层传给该端口的数据都被相应的应用进程所接收。#端口又是应用进程访问传输服务的入口点SAP。,端口,应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCPIP协议交互提供了称为套接字(Socket)的接口。,TCP/IP体系结构上三层,端口的实现端口号:长度为16bit(065535)不同的OS,实现上有差异;仅具有本地意义;端口的分类熟知端口:01023,为常用的应用指定的固定值一般端口:102465535,一般程序使用SOCKET=(IP,Port),TCP,PortNumbers,FTP,TransportLayer,TELNET,DNS,SNMP,TFTP,SMTP,UDP,ApplicationLayer,21,23,25,69,161,RIP,520,53,Internet常用端口号,91,1500,91,,1500,IP地址,端口号,SOCKET,总结:穿越因特网从一个端点发送信息到另外一个端点,需要三种不同的地址:MAC、IP、Port指明哪个网络的哪个点(主机、网卡)上的哪个应用进程产生或接收的数据,:80/index.html该URL说明指定服务器上提供了WEB服务,采用TCP协议进行数据传输这台服务器的DNS名称为WWW.XIYOU.EDU.CN()端口为:80,在JAVA程序设计中,采用TCP方式通信,使用Socket类实现客户端:Socket(,1080);创建指向目的主机的1080端口发起连接请求。服务器端:SocketServer(1080);一直监听1080端口是否有数据到达采用UDP方式,使用DatagramSocket类实现连接,端口,TCP状态应用举例,查看端口Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstata本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。netstatn显示所有已建立的有效连接。,端口,TCP状态应用举例,查看端口,端口,TCP状态应用举例,查看端口要注意的问题1、知道本机开了那些端口,也就是可以进入到本机的“门”有几个,都是谁开的?2、目前本机的端口处于什么状态,是等待连接还是已经连接,如果是已经连接那就要特别注意看连接是个正常连接还是非正常连接(木马等)?3、目前本机是不是正在和其它计算机交换数据,是正常的程序防问到一个正常网站还是访问到一个陷阱?,端口,TCP状态应用举例,服务端口的状态变化1、LISTENING状态在主机0启动FTP服务后首先处于侦听状态。即端口是开放的,等待连接,但还没有被连接。就像你房子的门已经敞开的,但还没有人进来。TCP::0LISTENING2、ESTABLISHED状态现在从这台计算机访问0的FTP服务。端口状态变为ESTABLISHED。意思已建立连接,两台机器正在通信。TCP0:21:3009ESTABLISHED,端口,TCP状态应用举例,服务端口的状态变化1、CLOSEWAIT状态结束了这次连接。端口状态变为CLOSEWAIT状态说明21端口曾经有客户访问过,但访问结束了。TCP0:21:3009CLOSE_WAIT,端口,TCP状态应用举例,客户端口的状态变化1、SYN_SENT状态当要访问其它的计算机的服务时首先要发连接请求信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。TCP0:103549:80SYN_SENT,端口,TCP状态应用举例,客户端口的状态变化2、ESTABLISHED状态本机正在访问某网站。发现一个地址有许多ESTABLISHED,这是正常的,网站中的每个内容比如图片、flash等都要单独建立连接。,端口,TCP状态应用举例,客户端口的状态变化3、TIME_WAIT状态现在从这台计算机结束访问0的FTP服务。TCP:30090:21TIME_WAIT,JAVA中的套接字,TCP:Socket类:建立一个客户端标识ServerSocket类:建立一个服务器端标识UDP:DatagramSocket类:建立对等端标识DatagramPacket类:建立一个数据包MulticastSocket类:建立一个组播端标识,TCP下的套接字类,Socket类:建立一个客户端标识ServerSocket类:建立一个服务器端标识,Socket类,Socket类,其常用构造方法:protectedSocket()throwsIOExceptionpublicSocket(InetAddressaddr,intport)throwsIOExceptionpublicSocket(Stringhost,intport)throwsIOException向某指定主机的指定端口发出连接请求Socketsc1=newSocket(,80);Socketsc2=newSocket(,80);,Socket类常用方法,Publicvoidclose()InetAddressgetInetAddress()InetAddressgetLocalAddress()InputStreamgetInputStream()OutputStreamgetOutputStream()IntgetPort(),ServerSocket类,用于服务器端建立一个监听端口其常用构造方法ServerSocket()throwsIOExceptionServerSocket(intport)throwsIOExceptionServerSocket(intport,intbacklog)throwsIOExceptionServerSocket(intport,intbacklog,InetAddressbindAddr)throwsIOException监听本地某个指定的端口(即本软件进程所使用的端口)ServerSocketss0=newServerSocket(80);,ServerSocket类,常用方法,publicSocketaccept()服务器接收客户端连接请求publicvoidclose()InetAddressgetInetAddress()intgetLocalPort()getOutputStream()getInputStream(),客户/服务器通信,服务器Socket,Listening,Accept客户,Input/Output,Close,客户Socket,Output/Input,Close,Server,Client,例程,例exp6_01.java服务器端例exp6_02.java客户端例exp6_03.java通信协议的,监听指定端口,Intport=8888;ServerSocketmyService=null;TrymyService=newServerSocket(port);catch(IOExceptione)System.out.print(e.toString();,客户端发出连接请求,SocketmyClient=null;trymyClient=newSocket(“host”,port);catch(UnknownHostExceptione)System.out.print(e.toString();catch(IOExceptione1)System.out.print(e1.toString();,服务器接受客户端请求,SocketserviceSocket=null;tryserviceSocket=myService.accept();catch(IOExceptione)System.out.print(e.toString();,客户端创建InputStream,BufferedReaderis=null;Tryis=newBufferedReader(newInputStreamReader(myClient.getInputStream();catch(IOExceptione)System.out.print(e.toString();,客户端创建OutputStream,DataOutputStreamos=null;Tryos=newDataOutputStream(myClient.getOutputStream();catch(IOExceptione)System.out.print(e.toString();,服务器端创建InputStream,BufferedReaderis=null;Tryis=newBufferedReader(newInputStreamReader(serviceClient.getInputStream();catch(IOExceptione)System.out.print(e.toString();,服务器端创建OutputStream,DataOutputStreamos=null;Tryos=newDataOutputStream(serviceClient.getOutputStream();catch(IOExceptione)System.out.print(e.toString();,输入/输出,PrintStreamout=newPrintStream(newBufferedOutputStream(clientSocket.getOutputStream(),1024),false);DataInputStreamin=newDataInputStream(newBufferedInputStream(clientSocket.getInputStream();使用DataInputStream.readLine()按行接收数据。使用out.println(“aaaaaaaaaaaaaaa”)按行发送数据。,客户端关闭Socket,tryos.close();is.close();myClient.close();catch(IOExceptione)System.out.print(e.toString();,服务器端关闭Socket,tryos.close();is.close();serviceClient.close();myService.close()catch(IOExceptione)System.out.print(e.toString();,GreetingServer类结构,常见的错误,未增加IO异常处理;本地端口冲突;未连接指定服务器端端口;服务器端未启动。,聊天室服务器端举例,例exp6_04.java,ChatServer类,+staticintport=8888ServerSocketserverSocketUserLinkListuserLinkListServerListenlistenThread,ChatServer()+voidinit()+voidactionPerform()+voidstartService()+voidstopService()+voidsendStopToAll()+voidsendMsgToAll+voidsendSystemMessage()ImagegetImage(Stringfilename),AWT的TCP服务器端,至少具有一下功能有GUI用户界面;有监听端口设置;有监听启动按钮;可以接收客户端的请求;可以接收和发

温馨提示

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

评论

0/150

提交评论