- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实现socket通信
HYPERLINK /yincheng01/article/details/7079594 \o 基于visual c++之windows核心编程代码分析(10)实现socket通信 基于visual c++之windows核心编程代码分析(10)实现socket通信
分类: HYPERLINK /yincheng01/article/category/496131 VC++编程技术 HYPERLINK /yincheng01/article/category/663226 Visual C++2010编程技术 HYPERLINK /yincheng01/article/category/789801 Visual Studio2012 HYPERLINK /yincheng01/article/category/789799 Windows8 2011-12-17 11:32 120人阅读 HYPERLINK /yincheng01/article/details/7079594 \l comments 评论(0) HYPERLINK javascript:void(0); \o 收藏 收藏 HYPERLINK /yincheng01/article/details/7079594 \l report \o 举报 举报
在多台计算机之间实现通信,最常见的方法有两种:Socket通信与UDP通信。Socket是一种基于TCP/IP协议,建立稳定连接的点对点通信,它的特点是安全性高,数据不会丢失,但是很占系统资源。在JAVA中,ServerSocket类和Socket类为我们实现了Socket通信,建立通信的一般步骤是:1。建立服务器ServerSocket ss = new ServerSocket(端口号);Socket socket = ss.accept();这样,我们就已经建立了服务器,其中accept()方法会阻塞,知道有客户发送一个连接请求,我们可以通过socket.getInputStream()和socket.getOutputStream()来获得输入输出流,如调用socket.getInputStream()获得一个输入流,实际上这个流就是连接对方的一个输出流,流的操作与文件流操作相同,我们可以用操作文件的方法来操作它们。2。建立客户端Socket socket = new Socket(主机名,端口号)客户端只需这一句代码就可以与服务器取得连接,这里的主机名应为服务器的IP地址,端口号是服务器用来监听该程序的端口,同样可以通过socket.getInputStream()和socket.getOutputStream()来获得输入输出流。在以上程序中,已经实现了一个最简单的客户端和服务器的通信。但是,还有一些问题。首先,这个通信只执行一次,程序就将结束。因为我们只读了一次输入流,如果想要建立客户与服务器之间的稳定的会话,就要用到多线程:Thread thread = new Thread(new Sender());thread.start();
InputStream input = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(input));while(true){br.readLine();}其中,Sender是一个实现了Runnable接口的类,用它来专门负责发送数据,主线程只需要不听地接受数据就行。Sender类中的run()方法应该具有以下代码:PrintWriter pw = new PrintWriter(socket.getOutputStream());while(true){pw.println(数据);}即使按上面的方式做了,程序还是有问题,因为它只能在一个时间内为一个客户服务,不能同时为多个客户服务,如多要想同时为多个客户服务,服务器应具有类似以下的代码:ServerSocker ss = new ServerSocker(端口号);socket = null;while(true){socket = ss.accept();Thread thread1 = new Thread(new Sender());thread1.start();Thread thread2 = new Thread(new Receiver());thread2.start();}在这里,新开启了2个线程分别负责接收和发送。Receiver是一
文档评论(0)