网络编程 Java

1,IP 和 端口号

IP是唯一标识一个计算机 IPv(二进制)和IPv6(十六进制)

端口号 用来区分不同的程序(可以看成进程)0~6553 其中0~1023是固定端口

2,UDP和TCP的区别

对于udp和tcp的区别 :

tcp:

(1)效率相对于udp来说比较慢;但是数据不会丢失

(2)可以想象为打电话 打视频之类的

(3)三次握手,四次分手:

三次

A:你瞅啥?

B:瞅你咋地!

A:再瞅我搞你!!

四次

A:走了

B:真的要走吗?

B:真的不考虑一下吗?

A:是的。

有两个类 服务端(serverSocket)和用户端(Socket)

客户端

1、创建Socket对象,并指定服务器端应用程序的端口号和服务器端主机的IP地址。

2、使用Socket的对象调用getOutputStream()方法来获取字节输出流对象。

3、调用字节输出流的write(byte[] buf)或者write(int b)向服务器发送指定数据。

4、关闭资源。

package mdxy.www;

import java.io.OutputStream;
import java.net.Socket;

public class tast {
    public static void main(String[] args) throws Exception{
        /*客户端
        1、创建Socket对象,并指定服务器端应用程序的端口号和服务器端主机的IP地址。本机IP 127.0.0.1
        2、使用Socket的对象调用getOutputStream()方法来获取字节输出流对象。
        3、调用字节输出流的write(byte[] buf)或者write(int b)向服务器发送指定数据。
        4、关闭资源。*/
        //建立Socket类
        Socket socket=new Socket("127.0.0.1",5677);
        //使用Socket的对象调用getOutputStream()方法来获取字节输出流对象。
        OutputStream outputStream = socket.getOutputStream();
        //调用字节输出流的write(byte[] buf)或者write(int b)向服务器发送指定数据。
        outputStream.write("你好 服务器".getBytes());
        System.out.println("已发送");
        //关闭资源。
        outputStream.close();
        socket.close();
    }
}

服务器端

1、创建ServerSocket对象,并指定该应用程序的端口号,端口号必须和客户端指定的端口号一样。

2、使用ServerSocket对象的accept()方法来监听客户端发送过来的请求,返回值为Socket对象。

3、调用Socket对象的getInputStream()方法获取字节输入流对象

4、调用字节输入流对象的read(byte[] buf)read()方法获取数据。

5、关闭资源

package mdxy.www;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerTast {
    public static void main(String[] args) throws Exception{
        /*服务端
        *1、创建ServerSocket对象,并指定该应用程序的端口号,端口号必须和客户端指定的端口号一样。
        2、使用ServerSocket对象的accept()方法来监听客户端发送过来的请求,返回值为Socket对象。
        3、调用Socket对象的getInputStream()方法获取字节输入流对象
        4、调用字节输入流对象的read(byte[] buf)或read()方法获取数据。 */
        System.out.println("服务端已接到信息");
        //建立ServerSocket对象
        ServerSocket server=new ServerSocket(5677);
        //使用ServerSocket对象的accept()方法来监听客户端发送过来的请求,返回值为Socket对象
        Socket socket = server.accept();
        InputStream input = socket.getInputStream();
        int len=0;
        while ((len=input.read())!=-1){
            System.out.println((char)len);
        }
        //关闭资源
        input.close();
        socket.close();
        server.close();
    }
}

UDP

(1)效率高,数据可能会丢失

(2)不需要接收方是否准备好 就能发送

(3)发短信

(4)不需要双方连接

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值