网络编程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(); } }#网络编程#