这是一个使用java ServerSocket服务端 和 Socket客户端写的一个客户端发送消息,服务端接收消息的Demo
写在前面,首先需知道服务端的ip地址和端口号,这里我们就是拿本机ip地址既作为服务端也作为客户端
,区别它们在于端口的不同
,服务端需要设置固定端口
,客户端需要使用服务端的ip和服务器设置的固定端口
开发客户端使用Socket
分为四个步骤
- 1创建Socket连接,并指定服务器ip和服务器端口
- 2从建立的Socket哪里获取输入输出流
- 3处理输入输出流
- 4关闭连接
客户端Socket代码如下
public static void main(String[] args) throws Exception{
//Socket客户端有四个步骤
//第一步创建socket,指定服务器ip和服务器端口
System.out.println("正在发起和服务器的连接");
//这里的ip地址可以设置为你自己的IP地址
//端口可以随便设置,但一定要和下面服务端的端口一致,而且端口不能被占用
Socket socket = new Socket("10.9.21.233",9999);
//第二步获取输入输出流
//这里只获取了输出流
OutputStream os = socket.getOutputStream();
//第三步处理输入输出流
//只发送消息给服务器,字符参数需转为byte字节参数发送
os.write("对服务器说:hello".getBytes());
//必须刷新
os.flush();
//第四步关闭资源
//发送完成就关闭
os.close();
socket.close();
System.out.println("退出");
}
开发服务端使用ServerSocket
分为五
个步骤,比客户端多一个步骤
- 1创建ServerSocket连接,并指定服务器端口,这个端口就是ServerSocket用来监听的端口
- 2监听该端口,获取与客户端Socket的连接
- 3从监听到的Socket哪里获取输入输出流
- 3处理输入输出流
- 4关闭连接
客户端ServerSocket代码如下
public static void main(String[] args) throws Exception {
//ServerSocket服务器端有五个步骤
//创建ServerSocket连接,并指定服务器端口,这个端口就是ServerSocket用来监听的端口
System.out.println("服务器启动成功:");
ServerSocket listener = new ServerSocket(9999);
//第二步监听该端口,获取与客户端Socket的连接
Socket clientSocket = listener.accept();
//第三步获取输入输入流
InputStream is = clientSocket.getInputStream();
//第四步处理输入输出流
//这里建立了一个字节数组,用做缓冲区来接收客户端Socket发过来的字节信息
byte[] buf = new byte[1024];
//用于判断是否读取完毕和保存读取的数据存到了buf缓冲的哪一个位置了,从0开始存
int len=-1;
//这里使用循环读取,发送过来的字节信息,不等于-1代表还没有读取完毕
while ((len=is.read(buf))!=-1){
//从0位置开始读取,到len位置结束
// 因为buf数组中有效的数据就是从0到len长度这个区间的数据
String str = new String(buf,0,len);
System.out.println("客户端说:"+str);
}
}
上述就是最基础的ServerSocket和Socket之间的通信
记得首先启动服务端,然后在启动客户端,ip地址和端口号不要写错了