Socket通信 socket通信实例


在多台计算机之间实现通信,最常见的方法有两种: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(newInputStreamReader(input));
while(true){
br.readLine();
}
其中,Sender是一个实现了Runnable接口的类,用它来专门负责发送数据,主线程只需要不听地接受数据就行。Sender类中的run()方法应该具有以下代码:
PrintWriter pw = new PrintWriter(socket.getOutputStream());
Socket通信 socket通信实例
while(true){
pw.println(数据);
}
即使按上面的方式做了,程序还是有问题,因为它只能在一个时间内为一个客户服务,不能同时为多个客户服务,如多要想同时为多个客户服务,服务器应具有类似以下的代码:
ServerSocker ss = new ServerSocker(端口号);
socket = null;
while(true){
socket =ss.accept();
Threadthread1 = new Thread(new Sender());
thread1.start();
Threadthread2 = new Thread(new Receiver());
thread2.start();
}
在这里,新开启了2个线程分别负责接收和发送。Receiver是一个与Sender非常相似的类,它主要用来接收数据。在客户端,我们同样应开启2个线程:
Socket socket = new Socket(服务器IP,端口号);
Sender sender = new Sender(socket);
Thread thread1 = new Thread(sender);
thread1.start();

Receiver receiver = new Receiver(socket);
Thread thread2 = new Thread(receiver);
thread2.start();

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/299239.html

更多阅读

京东通信170号段怎么预约购买 阿里通信 170预约

京东通信170号段怎么预约购买——简介京东170号段SMI手机卡怎么预约购买,京东170SIM电话卡怎么买,京东通信所卖出来的SIM电话卡是虚拟运营商卖的,其最大的特点就是使用套餐所传统的运营商提供的资费套餐有很大的不一样如:通话费,信息费,

ESET与内核通信错误解决方法 eset与内核通信时出错

开机后ESET提示“与内核通信时出错”,现在的网络太可怕,装个基本够用的杀软得了。以自己的经验选择ESET是不错的选择,占用资源超低,升级方便,对大家而言又是免费的。哈哈就它了,结果问题如上。网上一大堆解决方法都不怎么嘀

串口通信的分类 基于fpga的串口通信

串口通信的分类串口通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。2.1同步通信同步通信是一种连续串行传送数据的通信方式,一次通信

windows网络编程socket) c语言socket网络编程

应用程序创建socket,通过绑定,socket与驱动程序联系,向socket发送的数据通过驱动发到网络。端口号标识在同一台计算机上运行的不同网络程序。1.socket函数SOCKET socket(int af, int type, int protocol)af: 地址族,对于TCP/IP只能是AF_I

linux中socket编程中使用send发送结构体小结 c socket 结构体

客套话不说了:socket中的send函数可以发送字符串,不能直接发送结构体,自己理解:结构体即内存中一段连续的内存,这样send中可以发送结构体指针 上代码:代码功能:客户端发送给服务端一个结构体,服务端返回客户端一字符串客户端代码 client.

声明:《Socket通信 socket通信实例》为网友叼着煙頭蝣蕩分享!如侵犯到您的合法权益请联系我们删除