上一篇的两个程序只能客户端向服务器端发送信息,这次我们就说一下两边相互发送信息的程序格式:
首先是服务器端:
import java.io.*;
import java.net.*;
public class TestSockServer {
public static void main(String[] args) {
InputStream is = null; //首先定义两个输入输出流
OutputStream os = null;
try{
ServerSocket s = new ServerSocket(4444); //定义一个服务器端口,制定端口号
Socket ss = s.accept(); //端口巡查
is = ss.getInputStream();
os = ss.getOutputStream();
DataInputStream dis = new DataInputStream(is); //变红的这几条语句便是标准输入输出流格式
DataOutputStream dos = new DataOutputStream(os);
System.out.println(dis.readUTF());
System.out.println("from:" + ss.getInetAddress());
System.out.println("Port:" + ss.getPort());
dos.writeUTF("bye");
dis.close();
dos.close();
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这些都很好理解,和上一篇文章的格式大同小异,但是需要注意的是,在服务区端是先接收的信息,那么在客户端就应该是先发送信息:
import java.io.*;
import java.net.*;
public class TestSockClient {
public static void main(String[] args) {
InputStream is = null;
OutputStream os = null;
try{
Socket ss = new Socket("127.0.0.1",4444);
os = ss.getOutputStream();
is = ss.getInputStream();
DataOutputStream dos = new DataOutputStream(os);
DataInputStream dis = new DataInputStream(is);
dos.writeUTF("Hello");
System.out.println(dis.readUTF());
dis.close();
dos.close();
ss.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {e.printStackTrace();}
}
}
和服务器端都是一一对应的