目录
1.TCP-对象
2.UDP
1.TCP-对象
利用TCP传输对象信息,需要对对象进行实例化
User类:
package dh09.demo02;import java.io.Serializable;public class User implements Serializable {private String name;private String pwd;public User() {}public User(String name, String pwd) {this.name = name;this.pwd = pwd;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}
服务器端:
package dh09.demo02;import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;//服务器
public class Demo01 {public static void main(String[] args) {try {ServerSocket serverSocket = new ServerSocket(8090);Socket socket = serverSocket.accept();InputStream iStream = socket.getInputStream();ObjectInputStream ois = new ObjectInputStream(iStream);User user = (User) ois.readObject();System.out.println("客户端说:"+user.getName()+"-"+user.getPwd());//通过输出流给客户端一个响应OutputStream os = socket.getOutputStream();String reply = "欢迎登陆";os.write(reply.getBytes());os.close();ois.close();iStream.close();socket.close();serverSocket.close();} catch (Exception e) {e.printStackTrace();}}}
客户端:
package dh09.demo02;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;//客户端
public class Test01 {public static void main(String[] args) {try {Socket socket = new Socket("localhost", 8090);OutputStream oStream = socket.getOutputStream();ObjectOutputStream oos = new ObjectOutputStream(oStream);User user = new User("admin","123456");oos.writeObject(user);socket.shutdownOutput();InputStream iStream = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(iStream));String reply;while ((reply = br.readLine())!=null) {System.out.println("服务器响应说:"+reply);}br.close();iStream.close();oos.close();oStream.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}
2.UDP
package dh09.UDPDemo;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;public class ReceiveMessageDemo {public static void main(String[] args) {//接收数据//1.创建DatagramSocket对象try {DatagramSocket dSocket = new DatagramSocket(10086);//2.接收数据包byte[] b = new byte[1024];DatagramPacket dPacket = new DatagramPacket(b,b.length);dSocket.receive(dPacket);//3.解析数据包byte[] data = dPacket.getData();int len = dPacket.getLength();InetAddress address = dPacket.getAddress();int port = dPacket.getPort();System.out.println("接收到数据:"+new String(data,0,len));System.out.println("该数据是从:"+address+",这台电脑中的:"+port+"这个端口号发出的");//4.释放资源dSocket.close();} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
发送端:
package dh09.UDPDemo;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;public class SendMessageDemo {public static void main(String[] args) {try {//1.创建DatagramSocket对象DatagramSocket dSocket = new DatagramSocket();//2.打包数据String string = "你好";byte[] b = string.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");int port = 10086;DatagramPacket dPacket = new DatagramPacket(b, b.length,address,port);//3.发送数据dSocket.send(dPacket);//4.释放资源dSocket.close();} catch (SocketException e) {e.printStackTrace();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}