服务器端
- 创建一个套接字socket,使用accept()方法侦听并接受服务器的套接字
- 创建服务器套接字输入流,输出流
- 使用readUTF()方法从服务器输入流读取数据,也就是客户机的输出流
- 输出客户机向服务器发来的信息,此信息由客户机输出流进入了服务器输入流
- 由服务器向客户机发出信息,服务器向自己的输出流中使用writerUTF()方法写入数据相当于向客户机的输入流写入信息
服务器端代码如下:
package 网络编程;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Test4 {
public static void main(String[]args){
//服务器端
ServerSocket serverSocket = null;
Socket socket = null;
DataInputStream in = null;
DataOutputStream out = null;
try {
serverSocket = new ServerSocket(4320);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("服务器1启动!");
try {
socket = serverSocket.accept();//侦听并接受到服务器套接字的连接,此方法在连接传入之前处于阻塞状态
in = new DataInputStream(socket.getInputStream());//创建输入流
out = new DataOutputStream(socket.getOutputStream());//创建输出流
String string = in.readUTF();//从输入流读取字符串,读取结束之前是阻塞状态
System.out.println(string);//输出客户机发过来的消息
out.writeUTF("你好我是服务器1");//向服务器输出流写入字符串
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
in.close();
out.close();
serverSocket.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
客户端
- 创建客户端的套接字实例化,并且设置为服务器的端口号和服务器的ip地址实现和服务器的连接
- 建立客户端的输入输出流
- 客户端向服务器发送信息,客户端向自己的输出流使用writerUTF()方法写入信息。相当于将自己信息写到服务器的输入流。
- 从客户端的输入流中使用readUTF()方法读取到服务输出流发来的信息
- 打印并输出来自服务器的信息
客户端的代码如下:
package 网络编程;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
public class Test5 {
public static void main(String[]args){
Socket client = null;
DataInputStream in = null;
DataOutputStream out = null;
String ip = "127.0.0.1";//服务器ip地址
int prot = 4320;//服务器端口
try {
client = new Socket(ip,prot);//与服务器建立连接
in = new DataInputStream(client.getInputStream());//创建客户机的输入流
out = new DataOutputStream(client.getOutputStream());//创建客户机的输出流
out.writeUTF("你好我是客户机1");//向服务器发送信息
String string = in.readUTF();//等待服务器响应信息,进入阻塞状态
System.out.println(string);//服务器端响应的信息
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
in.close();
out.close();
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
运行结果:
-
先运行服务器:
-
再运行客户端:
3. 成功连接!