1、TCP实现聊天
客户端代码:
public class TcpClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 9999);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("你好呀".getBytes());
outputStream.close();
socket.close();
}
}
服务端代码:
public class TcpServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
//等待客户端连接,阻塞
Socket socket = serverSocket.accept();
//读取客户端发过来的信息
InputStream inputStream = socket.getInputStream();
//管道流
ByteArrayOutputStream 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());
byteArrayOutputStream.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
2、TCP实现文件上传
客户端:
public class TcpUploadClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 9999);
OutputStream outputStream = socket.getOutputStream();
FileInputStream input = new FileInputStream(new File("1.jpg"));
byte[] bytes = new byte[1024];
int len ;
while ((len = input.read(bytes)) != -1){
outputStream.write(bytes,0,len);
}
//通知服务器,我已经传输完了
socket.shutdownOutput();
//接收服务端响应的消息
InputStream inputStream = socket.getInputStream();
ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
byte[] bytes1 = new byte[2048];
int len1 ;
while ((len1 = inputStream.read(bytes1)) != -1){
outputStream1.write(bytes1,0,len1);
}
System.out.println(outputStream1.toString());
outputStream1.close();
inputStream.close();
input.close();
outputStream.close();
socket.close();
}
}
服务端:
public class TcpUploadServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
FileOutputStream output = new FileOutputStream(new File("upload.jpg"));
byte[] bytes = new byte[1024];
int len ;
while ((len = inputStream.read(bytes)) != -1){
output.write(bytes,0,len);
}
//通知客户端下载完毕
OutputStream outputStream = socket.getOutputStream();
outputStream.write("我下载完了".getBytes());
outputStream.close();
output.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}