计算机网络通信中的端口到底是什么意思?IP、端口号与计算机、操作系统、进程、线程之间的关系是什么?编程的时候怎么正确理解这些关系?
2021-06-03 11:03
标签:网络通信 编程 buffere except throw img image client 网卡 如何理解IP、端口号与计算机、操作系统、进程、线程的关系? IP是计算机维度的。一个IP对应一个网卡。不过有的计算机可以有多个网卡。 端口号是线程维度的,用于不同计算机之间的线程进行通信。 为什么客户端需要知道服务端的端口号,服务端不需要知道客户端的端口号呢? 客户端的端口是随机产生的,服务端接受客户端的请求的socket里面,带有客户端的端口号。 如下是服务端代码: 如下是客户端代码:(两个客户端) 计算机网络通信中的端口到底是什么意思?IP、端口号与计算机、操作系统、进程、线程之间的关系是什么?编程的时候怎么正确理解这些关系? 标签:网络通信 编程 buffere except throw img image client 网卡 原文地址:https://www.cnblogs.com/mkl34367803/p/14672896.htmlimport java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketTest {
public static void main(String[] args) {
new Thread(new MyServerSocket(30000)).start();
new Thread(new MyServerSocket(40000)).start();
while (true){
}
}
}
class MyServerSocket implements Runnable{
private int port;
public MyServerSocket(int port){
this.port=port;
}
@Override
public void run() {
try {
ServerSocket ss=new ServerSocket(port);
while (true){
Socket socket = ss.accept();
OutputStream outputStream = socket.getOutputStream();
PrintStream printStream = new PrintStream(outputStream);
printStream.println("hello current thread is "+Thread.currentThread().getName());
printStream.close();
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.Socket;
public class ClientSocket {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 30000);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = bufferedReader.readLine();
System.out.println("来自服务器的数据"+line);
bufferedReader.close();
socket.close();
}
}
import java.io.*;
import java.net.Socket;
public class ClientSocket222 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 40000);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = bufferedReader.readLine();
System.out.println("来自服务器的数据"+line);
bufferedReader.close();
socket.close();
}
}
在server打上断点,可以看到客户端请求的IP和端口号,客户端的端口号57276是一个随机的线程端口号。而服务端的30000端口号由于需要监听客户端的连接,所以客户端需要知道这个端口号。
文章标题:计算机网络通信中的端口到底是什么意思?IP、端口号与计算机、操作系统、进程、线程之间的关系是什么?编程的时候怎么正确理解这些关系?
文章链接:http://soscw.com/index.php/essay/90027.html