markdown
## 简述
```text
1. 要素
IP:Port 构成了 Socket
通信协议
2. 参考模型
OSI 7层协议
```
## TCP实例
```text
# 服务端
System.out.println("server 启动");
Socket socket = null;
try {
socket = new ServerSocket(8889).accept();
InputStream inputStream = socket.getInputStream();
char[] chars = new char[10];
int read =0;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf8");
while ((read = inputStreamReader.read(chars)) != -1){
for (int i = 0; i < read; i++) {
System.out.print(chars[i]);
}
}
socket.shutdownInput();
System.out.println("from" + socket.getInetAddress().getHostAddress());
OutputStream outputStream = socket.getOutputStream();
outputStream.write(new String("byby").getBytes());
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
```
```text
# 客户端
System.out.println("client 启动");
try {
Socket socket = new Socket("127.0.0.1", 8889);
OutputStream outputStream = socket.getOutputStream();
byte[] bytes = new String("hello world 你好").getBytes();
outputStream.write(bytes);
outputStream.flush();
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
char[] chars = new char[10];
int read =0;
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf8");
while ((read = inputStreamReader.read(chars)) != -1){
for (int i = 0; i < read; i++) {
System.out.print(chars[i]);
}
}
inputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
```
## UDP实例
```text
#服务端
try {
DatagramSocket datagramSocket = new DatagramSocket(8890);
DatagramPacket datagramPacket;
byte[] bytes = new byte[1024];
datagramPacket = new DatagramPacket(bytes,0,bytes.length);
datagramSocket.receive(datagramPacket);
byte[] data = datagramPacket.getData();
for (byte datum : data) {
System.out.print((char) datum);
}
datagramSocket.close();
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
```
```text
# 客户端
try {
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.connect(InetAddress.getLocalHost(),8890);
DatagramPacket datagramPacket = new DatagramPacket(new String("hello world").getBytes(),0,new String("hello world").getBytes().length);
datagramSocket.send(datagramPacket);
datagramSocket.close();
} catch (SocketException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
```
*
*[返回教程主页](https://www.monody.net/p/blog-page_3.html)*
*
评论