模拟客户端发送消息,服务端接收
服务端:
package JUC.tcp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServerTest {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
//暴露一个连接地址
serverSocket = new ServerSocket(9999);
//等待连接
socket = serverSocket.accept();
//读取结果
inputStream = socket.getInputStream();
//创建管道
byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1){
byteArrayOutputStream.write(bytes,0,len);
}
System.out.println(byteArrayOutputStream.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
if (byteArrayOutputStream != null){
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (inputStream != null){
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket != null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
客户端:
package JUC.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClientTest {
public static void main(String[] args) {
OutputStream outputStream = null;
Socket socket = null;
//连接服务地址
try {
InetAddress byName = InetAddress.getByName("127.0.0.1");
int prot = 9999;
//创建连接地址
socket = new Socket(byName,prot);
//发送消息
outputStream = socket.getOutputStream();
outputStream.write("say hi".getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally {
if (outputStream != null){
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
传文件
服务端
package JUC.tcp.file;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServerFileTest {
public static void main(String[] args) throws IOException {
//创建服务
ServerSocket serverSocket = new ServerSocket(9999);
//等待接收
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
FileOutputStream outputStream = new FileOutputStream(new File("reles.png"));
byte[] bytes = new byte[1024];
int len;
while ((len = inputStream.read(bytes)) != -1){
outputStream.write(bytes,0,len);
}
//通知客户端接收完毕
OutputStream outputStream1 = socket.getOutputStream();
outputStream1.write("ok".getBytes());
outputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
客户端
package JUC.tcp.file;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClientFileTest {
public static void main(String[] args) throws IOException {
//
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9999);
OutputStream os = socket.getOutputStream();
FileInputStream is = new FileInputStream(new File("D:\\zcCode\\REF_BROP-POP_pa-testing\\pa-testing\\kkk.png"));
byte[] bytes = new byte[1024];
int len;
while ((len = is.read(bytes)) != -1){
os.write(bytes,0,1);
}
socket.shutdownOutput();//告诉服务端传输完了
//确定服务器接收完毕,才能断开
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] bytes1 = new byte[1024];
int len2;
while ((len2 = inputStream.read(bytes1)) != -1){
baos.write(bytes1,0,1);
}
System.out.println(baos.toString());
os.close();
is.close();
socket.close();
}
}