【java网络】深化对SeverSocket和Socket的理解

  • SeverSocket和Socket多线程的使用

服务端:

package edu.net.sever.sever.client.sever;

import edu.Student;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

class Service implements Runnable{
    private ServerSocket server = null;
    private Socket s = null;

    private InputStream input = null;
    private OutputStream output = null;
    private ObjectOutputStream objout = null;
    private PrintWriter pw = null;

    public Service(Socket s){
        this.s = s;
    }
    @Override
    public void run() {
        try {
            input = s.getInputStream();
            output = s.getOutputStream();
            objout = new ObjectOutputStream(output);
            pw = new PrintWriter(output);


            //发一个整数
            objout.writeInt(20);
            //发一个浮点数
            objout.writeDouble(23.99);
            //发一个字符串
//            pw.println("Hello");
            //发一个对象
            Student ss = new Student(123,"HAHA",'男');
            objout.writeObject(ss);

//            pw.flush();
            objout.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public class ObjectSever {
    public static void main(String[] args) {
        ServerSocket server = null;
        Socket s = null;

        InputStream input = null;
        OutputStream output  = null;
        ObjectOutputStream objout = null;
        PrintWriter pw = null;
        try {
            server = new ServerSocket(9999);
            System.out.println("监听客户是否连接");
            while (true) {
                s = server.accept();
                System.out.println("已监听到客户连接[远程主机:" +
                        s.getRemoteSocketAddress()
                        + ":端口" + s.getPort() + "]");



                  new Thread(new Service(s)).start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

客户端:

package edu.net.sever.sever.client.client;

import edu.Student;

import java.io.*;
import java.net.Socket;
import java.net.ServerSocket;

public class ObjectClient {
    public static void main(String[] args) {
        Socket s = null;
        String ip = "192.168.50.13";
        int port = 9999;

        InputStream input = null;
        OutputStream output = null;
        ObjectInputStream  objin = null;
//        BufferedReader bf = null;


        try {
            s = new Socket(ip, port);


            input = s.getInputStream();
            output = s.getOutputStream();

            objin = new ObjectInputStream(input);


            int a = objin.readInt();
            System.out.println(a);
            double b = objin.readDouble();
            System.out.println(b);
//            BufferedReader bf = new BufferedReader(
//                    new InputStreamReader(in));
//            String str = bf.readLine();

//            Student stu = (Student) objin.readObject();
            System.out.println(objin.readObject());
            //System.out.println(a + ":" + b + ":" +/*+ str +*/ ":" + stu);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

学生对象类:

package edu;

import java.io.Serializable;

public class Student implements Serializable {  // 标识接口
    private int age;
    private String name;
    private char sex;

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public Student(){

    }
    public Student(int age, String name,char sex) {
        this.age = age;
        this.name = name;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                '}';
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

进行信息传输时,读写顺序需一致。

发布了101 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TONGZONGE/article/details/94650385