网络编程Socket

网络的一些名词

ip地址:唯一标识一个电脑的

ip是4个字节组成的例如:xx.xx.xx.xx,每一个xx是一个字节范围就是0到255

| 0255 | 0255 | 0255 | 0255 |

ip地址的组成是:网络地址+主机地址

有A类,B类CDE。。。

例如:192.168.16.1前面三个就是你的网络地址,后面一个就是你的主机标识

域名:把ip地址变成为www.xxx.com

端口号:是在一个主机的里面确定,是哪一个软件

范围是065535 ,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();
    }
}
#网络编程#
全部评论
socket功能要更强大吧
点赞 回复 分享
发布于 2022-08-20 23:22 陕西

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务