socket, nio socket,及xml传递object 方法
来源:互联网 发布:人工智能用途 编辑:程序博客网 时间:2024/06/05 06:57
最近在弄关于socket的东东,现总结如下:
1:如何通过socket代理来访问服务端:
- String proxyHost = "192.168.204.212";
- String proxyPort = "1080";
- //通知Java要通过代理进行连接。
- System.getProperties().put("socksProxySet","true");
- //指定代理所在的机器
- System.getProperties().put("socksProxyHost",proxyHost);
- //指定代理监听的端口。
- System.getProperties().put("socksProxyPort",proxyPort);
- String host = "134.01.69.80";
- int port = 12086;
- System.out.println("connetioning:" + host + ":" + port);
- server = new Socket(host, port);
二:老socket传递Object对象:
要传递的对象:
- public class Employee implements Serializable {
- private int employeeNumber;
- private String employeeName;
- Employee(int num, String name) {
- employeeNumber = num;
- employeeName= name;
- }
- public int getEmployeeNumber() {
- return employeeNumber ;
- }
- public void setEmployeeNumber(int num) {
- employeeNumber = num;
- }
- public String getEmployeeName() {
- return employeeName ;
- }
- public void setEmployeeName(String name) {
- employeeName = name;
- }
- }
client:
- public class Client {
- public static void main(String[] arg) {
- try {
- Employee joe = new Employee(150, "Joe");
- System.out.println("employeeNumber= " + joe.getEmployeeNumber());
- System.out.println("employeeName= " + joe.getEmployeeName());
- Socket socketConnection = new Socket("127.0.0.1", 11111);
- ObjectOutputStream clientOutputStream = new ObjectOutputStream(
- socketConnection.getOutputStream());
- ObjectInputStream clientInputStream = new ObjectInputStream(
- socketConnection.getInputStream());
- clientOutputStream.writeObject(joe);
- joe = (Employee) clientInputStream.readObject();
- System.out.println("employeeNumber= " + joe.getEmployeeNumber());
- System.out.println("employeeName= " + joe.getEmployeeName());
- clientOutputStream.close();
- clientInputStream.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
server端:
java 代码
- public class Server {
- public static void main(String[] arg) {
- Employee employee = null;
- try {
- ServerSocket socketConnection = new ServerSocket(11111);
- System.out.println("Server Waiting");
- Socket pipe = socketConnection.accept();
- ObjectInputStream serverInputStream = new ObjectInputStream(pipe
- .getInputStream());
- ObjectOutputStream serverOutputStream = new ObjectOutputStream(pipe
- .getOutputStream());
- employee = (Employee) serverInputStream.readObject();
- employee.setEmployeeNumber(256);
- employee.setEmployeeName("li");
- serverOutputStream.writeObject(employee);
- serverInputStream.close();
- serverOutputStream.close();
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
三:nio socket传递Object:
client:
- public class Client {
- private String hostname;
- private int port;
- public Client(String hostname, int port)
- {
- this.hostname = hostname;
- this.port = port;
- }
- public static void main(String[] args) {
- String hostname = "192.168.0.81";
- int port = 8234;
- Student stu = new Student();
- stu.setId(849);
- stu.setName("Squall");
- Client client = new Client(hostname, port);
- try {
- client.write(stu);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- public void write(Object obj) throws IOException {
- SocketChannel channel = null;
- try {
- channel = SocketChannel.open(new InetSocketAddress(hostname, port));
- ByteBuffer buf = Client.getByteBuffer(obj);
- channel.write(Client.getByteBuffer(obj));
- channel.write(Client.getByteBuffer(obj));
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- channel.close();
- }
- }
- public static ByteBuffer getByteBuffer(Object obj) throws IOException
- {
- ByteArrayOutputStream bOut = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bOut);
- out.writeObject(obj);
- out.flush();
- byte[] arr = bOut.toByteArray();
- System.out.println("Object in " + arr.length + " bytes");
- ByteBuffer bb = ByteBuffer.wrap(arr);
- out.close();
- return bb;
- }
- }
server端:
java 代码
- public class Server {
- public static void main(String[] args) {
- System.out.println("in server!");
- ServerThread server = new ServerThread();
- new Thread(server).start();
- }
- static class ServerThread implements Runnable {
- public void run() {
- try {
- ServerSocketChannel sc = ServerSocketChannel.open();
- ServerSocket s = sc.socket();
- s.bind(new InetSocketAddress(8234));
- while (true) {
- Socket incoming = s.accept();
- Runnable r = new GetObjThread(incoming);
- Thread t = new Thread(r);
- t.start();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- static class GetObjThread implements Runnable {
- public GetObjThread(Socket s) {
- incoming = s;
- }
- public void run() {
- try {
- SocketChannel sc = incoming.getChannel();
- ByteBuffer bbIn = ByteBuffer.allocate(1024);
- sc.read(bbIn);
- sc.close();
- bbIn.flip();
- ByteArrayInputStream bIn = new ByteArrayInputStream(bbIn
- .array());
- ObjectInputStream in = new ObjectInputStream(bIn);
- Student nStu = (Student) in.readObject();
- System.out.println("student id is " + nStu.getId() + "/n"
- + "student name is " + nStu.getName());
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- private Socket incoming;
- }
- }
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket,及xml传递object 方法
- socket, nio socket 及nio socket框架MINA总结
- socket, nio socket 及nio socket框架MINA总结
- socket, nio socket 及nio socket框架MINA总结
- socket, nio socket 及nio socket框架MINA总结 (转)
- socket, nio socket 及nio socket框架MINA总结
- NIO socket
- NIO socket
- Java NIO 与 Nio Socket
- Java Socket 通信中传递Object对象注意的问题
- Java Socket 通信中传递Object对象注意的问题
- ORACLE概要文件
- java 外挂 按键精灵,感兴趣大家一起来学习。
- C#基础概念二十五问
- NIO的极限
- NIO Server Example
- socket, nio socket,及xml传递object 方法
- 基于事件的NIO多线程服务器
- DataView.RowFilter的使用(包括in,like等SQL中的操作符)
- Cindy有感
- Java NIO API详解
- Google怎么赚钱(转)
- More information on sap hr-abap infotypes
- 简单排序:qsort
- 一个简单的Thread缓冲池的实现