stock网络编程

上传人:奇异 文档编号:63529947 上传时间:2022-03-19 格式:DOCX 页数:8 大小:27.30KB
收藏 版权申诉 举报 下载
stock网络编程_第1页
第1页 / 共8页
stock网络编程_第2页
第2页 / 共8页
stock网络编程_第3页
第3页 / 共8页
资源描述:

《stock网络编程》由会员分享,可在线阅读,更多相关《stock网络编程(8页珍藏版)》请在装配图网上搜索。

1、一,网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务

2、进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。二,两类传输协议:TCP;UDPTCP是TranferControlProtocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是serversocket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。UDP是UserDatagramProtocol的简称,是

3、一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。比较:UDP:1,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。2, UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。3, UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方TCP:1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。2, TCP传输数据大小限制,一旦连接建立起来,双方的so

4、cket就可以按统一的格式传输大的数据。3, TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。应用:1, TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。2, UDP操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用UDP会更合理一些

5、。三,基于Socket的java网络编程1,什么是Socket网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个SocketoSocket通常用来实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定。但是,Socket所支持的协议不类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。3, Socket通讯的过程Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Conn

6、ect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤:(1) 创建Socket;(2) 打开连接到Socket的输入/出流;(3)按照一定的协议对Socket进行读/写操作;(4)关闭Socket.(在实际应用中,并未使用到显示的close,虽然很多文章都推荐如此,不过在我的程序中,可能因为程序本身比较简单,要求不高,所以并未造成什么影响。)3,创建Socket创建Socketjav

7、a在包中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。这是两个封装得非常好的类,使用很方便。其构造方法如下:Socket(InetAddressaddress,intport);Socket(InetAddressaddress,intport,booleanstream);Socket(Stringhost,intprot);Socket(Stringhost,intprot,booleanstream);Socket(SocketImplimpl)Socket(Stringhost,intport,InetAddresslocalAddr,int

8、localPort)Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)ServerSocket(intport);ServerSocket(intport,intbacklog);ServerSocket(intport,intbacklog,InetAddressbindAddr)其中address、host和port分别是双向连接中另一方的IP地址、主机名和端口号,stream指明socket是流socket还是数据报socket,localPort表示本地主机的端口号,localAddr和bindAdd

9、r是本地机器的地址(ServerSocket的主机地址),impl是socket的父类,既可以用来创建serverSocket又可以用来创建Socketocount则表示服务端所能支持的最大连接数。例如:学习视频网Socketclient=newSocket(127.0.01.,80);ServerSocketserver=newServerSocket(80);注意,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务。01023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23,所以我们在选

10、择端口号时,最好选择一个大于1023的数以防止发生冲突。在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。4,简单的Client/Server程序1.客户端程序importjava.io.*;.*;publicclassTalkClientpublicstaticvoidmain(Stringargs口)trySocketsocket=newSocket(127.0.0.1,4700);向本机的4700端口发出客户请求BufferedReadersin=newBufferedReade

11、r(newInputStreamReader(System.in);由系统标准输入设备构造BufferedReader对象PrintWriteros=newPrintWriter(socket.getOutputStream();由Socket对象得到输出流,并构造PrintWriter对象BufferedReaderis=newBufferedReader(newInputStreamReader(socket.getInputStream();由Socket对象得到输入流,并构造相应的BufferedReader对象Stringreadline;readline=sin.readLine(

12、);从系统标准输入读入一字符串while(!readline.equals(bye)若从标准输入读入的字符串为bye则停止循环os.println(readline);将从系统标准输入读入的字符串输出到Serveros.flush();刷新输出流,使Server马上收到该字符串System.out.println(Client:+readline);在系统标准输出上打印读入的字符串System.out.println(Server:+is.readLine();从Server读入一字符串,并打印到标准输出上readline=sin.readLine();从系统标准输入读入一字符串/继续循环os

13、.close();/关闭Socket输出流is.close();关闭Socket输入流socket.close();/关闭Socketcatch(Exceptione)System.out.println(Error+e);/出错,则打印出错信息2.服务器端程序importjava.io.*;.*;importjava.applet.Applet;publicclassTalkServerpublicstaticvoidmain(Stringargs口)tryServerSocketserver=null;tryserver=newServerSocket(4700);/创建一个ServerS

14、ocket在端口4700监听客户请求catch(Exceptione)System.out.println(cannotlistento:+e);出错,打印出错信息Socketsocket=null;trysocket=server.accept();/使用accept()阻塞等待客户请求,有客户请求到来则产生一个Socket对象,并继续执行catch(Exceptione)System.out.println(Error.+e);出错,打印出错信息Stringline;BufferedReaderis=newBufferedReader(newInputStreamReader(socket

15、.getInputStream();由Socket对象得到输入流,并构造相应的BufferedReader对象PrintWriteros=newPrintWriter(socket.getOutputStream();由Socket对象得到输出流,并构造PrintWriter对象BufferedReadersin=newBufferedReader(newInputStreamReader(System.in);由系统标准输入设备构造BufferedReader对象System.out.println(Client:+is.readLine();在标准输出上打印从客户端读入的字符串line=s

16、in.readLine();从标准输入读入一字符串while(!line.equals(bye)如果该字符串为bye”,则停止循环os.println(line);向客户端输出该字符串os.flush();刷新输出流,使Client马上收到该字符串System.out.println(Server:+line);在系统标准输出上打印读入的字符串System.out.println(Client:+is.readLine();从Client读入一字符串,并打印到标准输出上line=sin.readLine();从系统标准输入读入一字符串继续循环os.close();/关闭Socket输出流is.

17、close();关闭Socket输入流socket.close();/关闭Socketserver.close();/关闭ServerSocketcatch(Exceptione)System.out.println(Error:+e);出错,打印出错信息5,支持多客户的client/server程序前面的Client/Server程序只能实现Server和一个客户的对话。在实际应用中,往往是在服务器上运行一个永久的程序,它可以接收来自其他多个客户端的请求,提供相应的服务。为了实现在服务器方给多个客户提供服务的功能,需要对上面的程序进行改造,利用多线程实现多客户机制。服务器总是在指定的端口上监

18、听是否有客户请求,一旦监听到客户请求,服务器就会启动一个专门的服务线程来响应该客户的请求,而服务器本身在启动完线程之后马上又进入监听状态,等待下一个客户的到来。出师表两汉:诸葛亮先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑思纯,是以先帝简拔以遗陛下:愚以

19、为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之日能”,是以众议举宠为督:愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也工。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭弩钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诚善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!