网络编程Socket
网络的一些名词
ip地址:唯一标识一个电脑的
ip是4个字节组成的例如:xx.xx.xx.xx,每一个xx是一个字节范围就是0到255
| 0
255 | 0255 | 0255 | 0255 |ip地址的组成是:网络地址+主机地址
有A类,B类CDE。。。
例如:192.168.16.1前面三个就是你的网络地址,后面一个就是你的主机标识
域名:把ip地址变成为www.xxx.com
端口号:是在一个主机的里面确定,是哪一个软件
范围是0
65535 ,01024已经被占用了
网络通信协议:TPC/IP协议
这个简单描述一下类似于数据打包
你准备好了数据,包装好了发过去别人收到包装好的数据然后拆开包装得到数据
TPC协议:比较可靠通过三次握手,但每次传输要关闭资源效率低
UDP协议:类似于广播,我发出去就好了收不收随便你
TCP的Socket
这里是服务端
package one;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class Server {
public static void main(String[] args) throws IOException {
//创建一个9999的端口,在本机地址上面
ServerSocket serverSocket = new ServerSocket(9999);
//等待链接,一直会阻塞到这里相当于激活端口。
Socket accept = serverSocket.accept();
//拿到客户端的数据
InputStream inputStream = accept.getInputStream();
byte b [] = new byte[1024];
int n ;
while ((n = inputStream.read(b))!=-1){
System.out.print(new String(b,0,n));
}
//给我们的客户端响应一下
OutputStream outputStream = accept.getOutputStream();
outputStream.write("HI,hi".getBytes(StandardCharsets.UTF_8));
//ps:这里要设置一个结束标注不然两个主机都不会退出
accept.shutdownOutput();
inputStream.close();
outputStream.close();
serverSocket.close();
accept.close();
}
}这里是客户端
package one;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
public class Cilen {
public static void main(String[] args) throws IOException {
//这个是链接本机地址的9999端口。
Socket socket = new Socket("127.0.0.1",9999);
//这里面是发一个HI给那个端口
OutputStream outputStream = socket.getOutputStream();
outputStream.write("HI".getBytes(StandardCharsets.UTF_8));
socket.shutdownOutput();
//接收我们的服务端发的数据
InputStream inputStream = socket.getInputStream();
byte b [] = new byte[1024];
int n ;
while ((n = inputStream.read(b))!=-1){
System.out.print(new String(b,0,n));
}
inputStream.close();
outputStream.close();
socket.close();
}
}#网络编程#
