-
代码创建了一个套接字对象,并使用指定的IP地址和端口号(在此例中为9999)连接到服务器。
-
在建立连接后,代码获取套接字的输出流,以将数据发送到服务器。然后,它继续向服务器发送一张图片文件。代码以1024字节为单位读取图片文件,并将其写入输出流。文件发送完毕后,代码关闭了图片文件的输入流。
在发送图片后,代码向服务器发送一个字符串消息。该消息使用UTF-8编码转换为字节数组,并写入输出流。
-
接下来,代码获取套接字的输入流,以接收服务器的响应。它创建了一个字节数组,并将响应数据读取到其中。然后,代码使用UTF-8编码将接收到的字节转换为字符串,并打印响应。
如果在此过程中发生任何异常,代码将抛出一个带有异常详细信息的RuntimeException
。
总而言之,该代码建立了与服务器的连接,向服务器发送一张图片文件和一个字符串消息,然后接收并打印服务器的响应。
客户端代码如下:
public class Client {
public static void main(String[] args) {
//创建套接字对象访问服务器端口
try {
//1
Socket s = new Socket("ip地址",9999);
//2发送请求
OutputStream os = s.getOutputStream();
// 发送图片
FileInputStream fileInputStream = new FileInputStream("图片路径");
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fileInputStream.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
fileInputStream.close();
// 发送信息
String message = "信息";
os.write(message.getBytes("utf-8"));
//3 接受响应
InputStream is = s.getInputStream();
int len =0;
byte[]bytes = new byte[1024];
len=is.read(bytes);
System.out.println("收到响应:"+new String(bytes,0,len,"utf-8"));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
-
代码创建了一个ServerSocket对象,用于监听指定的端口号(在此例中为9999)。
-
启动服务器后,代码通过调用
accept()
方法等待客户端的连接。一旦有客户端连接到服务器,accept()
方法就会返回一个与该客户端通信的Socket对象。 -
代码从客户端的Socket对象中获取输入流,以读取客户端发送的请求数据。它创建一个字节数组,并将接收到的请求数据读取到数组中。然后,代码将字节数组转换为字符串,使用UTF-8编码进行解码,并打印收到的请求。
-
接下来,代码通过客户端的Socket对象获取输出流,以向客户端发送响应。它创建一个字符串作为响应内容,将其转换为字节数组,并使用UTF-8编码进行编码。然后,代码将字节数组写入输出流,发送响应给客户端。
如果在此过程中发生任何异常,代码将抛出一个带有异常详细信息的RuntimeException
。
总而言之,该代码创建了一个服务器,并在指定的端口上监听客户端的连接请求。一旦连接建立,它读取客户端的请求,并向客户端发送响应。
服务器代码如下:
public class Main {
public static void main(String[] args) {
//创建服务器
//创建ServerSocket对象
try {
//1 启动服务器
System.out.println("启动服务器");
ServerSocket ss=new ServerSocket(9999);
//2 针对该客户端的一个Socke对象
Socket s=ss.accept();
//3 读取客户端的请求
InputStream is=s.getInputStream();
byte[]bytes=new byte[1024];
int len=0;
len=is.read(bytes);
String req=new String(bytes,0,len,"utf-8");
System.out.println("收到请求"+req);
// 4 响应服务器
OutputStream os=s.getOutputStream();
String resp="已经收到请求,这是返回响应";
os.write(resp.getBytes("utf-8"));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}