socket传送自定义对象
来源:互联网 发布:软件测试第二版中文版 编辑:程序博客网 时间:2024/06/06 01:15
继续上回的socket。上回的socket传递的是一个基本类,这回传递的是一个自定义对象,自然是object,所以用到的流,也就是objectinputstream。废话不多说,直接上代码
===================================================================================================================================
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import MyBean.User;
public class MySocket {
ServerSocket serverSocket=null;
int port=54543;
ObjectInputStream objectInputStream=null;
User user=null;
public MySocket() {
try {
serverSocket=new ServerSocket(port);
while(
true
){
Socket socket=serverSocket.accept();
user=new User();
objectInputStream=new ObjectInputStream(socket.getInputStream());
user=(User) objectInputStream.readObject();
System.out.println("收到了");
objectInputStream.close();
socket.close();
if (user==null) {
System.out.println("空的,*");
}
System.out.println(user.getAge());
}
} catch (Exception e) {
}
}
public static void main(String[] args) {
new MySocket();
}
}
代码比较简单,里面的user是自己定义的。接下来是客户端的
=====================================================================================
package com.example.socketc8;
import android.support.v7.app.ActionBarActivity;
import java.io.BufferedWriter;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import MyBean.User;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements Runnable{
Button button;
Socket socket;
User user=null;
ObjectOutputStream objectOutputStream=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) this.findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(MainActivity.this).start();
}
});
}
@Override
public void run() {
try {
user=new User("护士",20);
socket=new Socket("183.26.254.109",54543);
objectOutputStream=new ObjectOutputStream(socket.getOutputStream());
objectOutputStream.writeObject(user);
objectOutputStream.flush();
objectOutputStream.close();
socket.close();
}
catch (Exception e) {
// TODO: handle exception
}
}
}
接下来将两点注意点
1.0.在使用时,user这个类(也就是我们的自定义对象类)必须是实现序列化。也就是implements serlizable
2.0在使用时,注意c.s两端必须把user这个来放在同一个包中,如package MyBean;,至于为什么,希望大神留言说下,谢谢,直接把bean的代码也上吧
package MyBean;
import java.io.Serializable;
public class User implements Serializable{
String name;
int age;
public User(String name,int age) {
this.name=name;
this.age=age;
}
public User() {
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
然后,希望你们那边c盘可以用来操作吧
- socket传送自定义对象
- Windows socket编程 udp协议传送封装自定义帧
- WCF中使用MSMQ无法传送自定义对象
- WCF中使用MSMQ无法传送自定义对象
- WCF中使用MSMQ无法传送自定义对象
- android socket 传自定义对象
- C# socket传输自定义对象
- C# socket传输自定义对象
- 使用Socket传送文件!
- socket传送字节流
- 重新研究socket传输自定义对象
- Tcpclient对象文件传送
- PassObject 对象传送
- java 传送对象方面
- Activity对象传送
- Intent传送对象
- C++利用SOCKET传送文件
- socket通信传送结构体!
- <Activity>的生命周期
- Java 有值类型吗?
- Leetcode 7. Reverse Integer
- 常用shell脚本
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- socket传送自定义对象
- java学习笔记之可变长参数
- hdu3440(差分约束)
- 数据库常见异常
- 变量
- PHP中htmlentities和 htmlspecialchars区别
- ROS Python No such file or directory
- 【Android官方文档】翻译Android官方文档-Services(二)
- 深入理解SpringMVC-基础篇