- 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;
}
}
进行信息传输时,读写顺序需一致。