TCP网络编程
基本流程
netstate指令
TCP连接秘密~
- 服务端开启端口8888监听,连接成功后,客户端也会开启一个随机端口
- 先关闭后打开的流,再关闭socket
- 关闭外层流,bufferedReader.close()不用再inputStream.close()
案例1:字节流
package com.hspedu.socket;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketTcp01Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket(InetAddress.getLocalHost(),9999);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello!server!".getBytes());
outputStream.close();
socket.close();
System.out.println("客户端退出");
}
}
package com.hspedu.socket;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTcp01Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket01 = new ServerSocket(9999);
System.out.println("9999端口监听,等待连接");
Socket socket = serverSocket01.accept();
System.out.println("socket = "+socket.getClass());
InputStream inputStream = socket.getInputStream();
byte[] buf = new byte[1024];
int readLen = 0;
while((readLen = inputStream.read(buf)) != -1) {
System.out.println(new String(buf,0,readLen));
}
inputStream.close();
socket.close();
serverSocket01.close();
}
}
案例2:socket结束
outputStream.write("Hello,server!".getBytes());
socket.shutdownOutput();
案例3:字符流
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class SocketTCPclient03 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
OutputStream outputStream = socket.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write("hello,server 字符流");
bufferedWriter.newLine();
bufferedWriter.flush();
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String s = bufferedReader.readLine();
System.out.println(s);
bufferedReader.close();
bufferedWriter.close();
socket.close();
}
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTCP03 {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String s = bufferedReader.readLine();
System.out.println(s);
OutputStream outputStream = socket.getOutputStream();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write("hello client03,字符流");
bufferedWriter.newLine();
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
socket.close();
serverSocket.close();
}
}
案例4:上传文件
UDP网络编程