利用java的socket发送一个类
来源:互联网 发布:分期网站源码 编辑:程序博客网 时间:2024/05/22 17:15
注意注意注意!需要串行化!
用socket可以简单的发送一些文本信息,太复杂的可能发送不了,比如图片音频可能要用到http来发送和接收了。最基本的使用socket来发送一个字符串,但有的时候我们希望能够发送一个类,这样server接收端处理信息将会非常方便。
对于待发送的类,要用socket来发送,则必须实现Serializable接口。实现这个接口后就将发送的对象串行化了,再使用对象输入输出流(ObjectOutputStream, ObjectInputStream)就可实现发送与接收。这个过程有点像通信里边的调制过程,在接收端server再将串行化的对象恢复成之前的类,就像解调过程。比如我们定义一个packets这个类,来发送一些信息。
import java.io.Serializable;public class Packets implements Serializable{ public int id; public String value; public int ballot_pid; public int ballot_num; public int position; public Packets(int id, String value, int ballot_pid, int ballot_num, int position){ this.id= id; this.value= value; this.ballot_pid= ballot_pid; this.ballot_num= ballot_num; this.position= position; } }
在发送的时候,我们定义一个client类。每次我们想发送packets,都先用packets的构造函数新建一个包,比如Packets pack= new Packets(......); 然后再用client里的send方法来将包发送出去,即client.send(pack)就可。
import java.io.IOException;import java.io.ObjectOutputStream;import java.net.Socket;import java.net.UnknownHostException;public class Client{ private int port= 2013; private String host= "127.0.0.1"; public Client(String host, int port){ this.host= host; this.port= port; } public void send(Packets packets) throws UnknownHostException, IOException{ Socket socket= new Socket(host, port); ObjectOutputStream os= new ObjectOutputStream(socket.getOutputStream()); os.writeObject(packets); socket.getOutputStream().flush(); socket.close(); }}
在接收的时候,用ObjectInputStream来获取这个包。
import java.io.IOException;import java.io.ObjectInputStream;import java.net.ServerSocket;import java.net.Socket;public class Server extends Thread{ private int port= 2013; private int sequence= 1; /*flag used to stop this thread*/ private boolean stop= false; /*pass addresses of clients from outside*/ public Server(int port){ this.port= port; } public void run(){ Socket socket= null; try{ ServerSocket serverSocket= new ServerSocket(port); while(!stop){ socket= serverSocket.accept(); handleSocket(socket); } } catch(Exception e){ e.printStackTrace(); } super.run(); } private void handleSocket(Socket socket) throws IOException, ClassNotFoundException{ ObjectInputStream ois= new ObjectInputStream(socket.getInputStream()); Packets packets= (Packets)ois.readObject(); /*handle packets start*/ /*if broadcast, use 'Blog.broadcast(Packets packets)'*/ System.out.println("id : "+ packets.id); System.out.println("val: "+ packets.value); System.out.println("pid: "+ packets.ballot_pid); System.out.println("num: "+ packets.ballot_num); System.out.println("pos: "+ packets.position); /*handle packets end*/ socket.close(); } /*function used to fail this server*/ public void fail(){ this.stop= true; } /*function used to restart this server*/ public void unfail(){ this.stop= false; } }
阅读全文
0 0
- 利用java的socket发送一个类
- java,利用一个socket发送多个文件
- 通信设计:利用java的socket发送json
- 一个socket发送调试信息的类
- 利用java Socket发送,接收文件.
- 利用Socket写的发送telnet命令的类
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- 利用java实现的一个发送手机短信的小例子
- linux系统下进程的信号(signal)处理流程是怎么样的?
- U盘无显示器无SD卡安装树莓派3
- JS作用域
- 微信小程序制作
- C++STL中,map/multimap,set/multiset 和vector的排序
- 利用java的socket发送一个类
- hdu6181-启发式搜索A*|次短路模板|最短路枚举-Two Paths
- 如何获取sha1值
- Java Maven项目中读取JSON文件报空指针异常以及解决方案
- Chrome谷歌浏览器调试JavaScript
- 关于Python模块安装在另外的路径方法
- Maven工程出现红色感叹号运行不成功的解决思路
- 多校9 Numbers HDU
- jmeter之HTTP取样器、Webserivce采样器、Debug Sampler、Cookie、header、授权、jdbc连接、用户自定义属性和变量