Java 网络编程总结

网络编程

1.常用端口:

Web服务默认端口号:80

Tomcat服务器默认端口号:8080

Mysql服务器默认端口号:3306

一般端口号为;1024--65535

2.TCP和UDP的区别:

  UDP:

1)将数据及源和目的封装成数据包,不需要建立连接。

2)每个数据报的大小限制在64k内。

3)因无连接,是不可靠协议。

4)不需要建立连接,速度快。

  TCP:

1)建立连接,形成传输数据的通道。

2)在连接中进行大数据量传输。

3)通过三次握手完成连接,是可靠协议。

4)必须建立连接,效率会稍低。

3.IP地址:网络中设备的标识。不易记忆,可用主机名。本地回环地址:127.0.0.1.主机名:localhost. 类:java.net.InetAddress.

4.端口号:用于标识进程的逻辑地址,不同进程的标识。有效端口号:0-65535,其中0-1024系统使用或保留端口。

5.传输协议:通讯的规则。常见协议:TCP,UDP。

6.http://www.baidu.com  http是协议,www是万维网,baidu是主机名,com表示属于商业组织。Org表示教育组织,一般都是免费。

7.类InetAddress(没有构造方法)常用方法:

public static InetAddress[] getAllByName(String host)throws UnknownHostException:获取所有主机名(不一定只有一个主机).

public static InetAddress getByName(String host)throws UnknownHostException :常用获取InetAddres的方法。

public String getHostAddress()返回 IP 地址字符串(以文本表现形式)。

public static InetAddress getLocalHost()throws UnknownHostException返回本地主机。

public String toString():将此 IP 地址转换为 String。返回的字符串具有以下形式:主机名/字面值 IP 地址。

8.网络编程其实就是Socket编程。

9.UDP传输(DatagramPacket中封装大量客户端信息):

发送一般步骤:

1)建立udpsocket服务。

2)提供数据,并将数据封装到数据包中。

3)通过socket服务的发送功能,将数据报发送出去、

4)关闭资源。、

接收一般步骤:

1)定义udpsocket服务。通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识。方便明确哪些数据过来该程序可以处理。

2)定义一数据包,来存储接收到的字节数据。因为数据包队形中有更多的功能可以提取自己数据中的信息。

3)通过socket服务的receive方法将收到的数据存入已定义好的数据包中。

4)通过数据包对象特有的功能,将这些不同的数据取出。打印在控制台上。

5)关闭资源。

发送端和接收端是两个独立运行的程序。

UDP中常用类:DatagrameSocket(既能接收又能发送),DatagramPacket(发送和接收包都用它。)

String data=new String(dp.getData(),0,dp.getLength());

10.Ip最后若为255,表示是广播地址。可以给这个ip段的任意计算机发信息。

TCP(Socket中封装了客户端的大量信息)

1.tcp分客户端和服务端。客户端对应的对象是Socket。服务端对应的对象是ServerSocket。

2.客户端的一般步骤:

1)创建客户端的socket服务。指定目的主机和端口

Socket s = new Socket("192.168.1.254",10003);

2)为了发送数据,应该获取socket流中的输出流。

OutputStream out = s.getOutputStream();

out.write("tcp ge men lai le ".getBytes());

3)关闭

3.服务端的一般步骤:

1)建立服务端的socket服务。ServerSocket();并监听一个端口。

ServerSocket ss = new ServerSocket(10003);

2)获取连接过来的客户端对象。通过ServerSokcet的 accept方法。  没有连接就会等,所以这个方法阻塞式的。

while(true)

{

Socket s = ss.accept();

String ip = s.getInetAddress().getHostAddress();

System.out.println(ip+".....connected");

       }

3)客户端如果发过来数据,那么服务端要使用对应的客户端对象, 并获取到该客户端对象的读取流来读取发过来的数据。并打印在 控制台。

InputStream in = s.getInputStream();

byte[] buf = new byte[1024];

int len = in.read(buf);

System.out.println(new String(buf,0,len));

4)关闭服务端。(可选),但要关闭客户端。

          s.close();

3.IO中的read方法,ServerSocket中的accept方法都会阻塞,等待输入对象。

4.用while循环保持服务器端一直开着。

5.输出数据时记得刷新。

6.客户端关闭时,注意想着关闭服务器端。因为若不发送关闭信息到服务器端,将导致服务器端阻塞。

s.shutdownOutput();给服务端发送关闭信息。s是Socket对象。因为bufIn.readLine是阻塞的,会等待服务端的。所以无法执行close。所以没有给服务端发送关闭信息,而服务端也在等,可能造成死循环。需要手动给服务器端发送关闭标记。关闭客户端的输出流。相当于给流中加入一个结束标记-1.

7.多次存储同一文件时,可以加(),然后给他加上编码。或者跟时间一起存,防止命名重复

8.talent是window系统提供的一个远程登录工具。可以再dos命令行下连接任意一台主机。简单理解成客户端软件。

9.Socket空构造函数,需用connect的方法,连接一个SocketAdderss,它的子类封装了ip和端口。

10.public ServerSocket(int port,int backlog);backlog是指最大连接人数。

11.一般情况下,你在浏览器上输入网址后,现在本机上找。若没有,浏览器在去找DNS服务器,上面有主机注册地址。DNS服务器会返回网址的DNS地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值