网络编程

来源:互联网 发布:淘宝买家秀怎么做兼职 编辑:程序博客网 时间:2024/06/06 01:22

TCP/IP分层

应用层 传输层 网络层 物理+数据链路层

每段都不超过255,有四个字节表示ip地址,每个字节取值范围0-255

1)IP提供了独一五二的IP地址

2)TCP可靠 慢

3)UDP不可靠 快

TCP端口与UDP端口是分开的,每个有65536个端口

先启动sever再启动client

TCP 

import java.net.*;
import java.io.*;
public class TCPSe {//插座,可插多个Client
  public static void main(String[] args)throws Exception {
    ServerSocket ss = new ServerSocket(6666);//在6666端口接听客户端连接,不能再次启动此端口的Sever,除非此Sever退出
    Socket s = ss.accept();//接收连接,accpet次数根据Client数量而定(阻塞式)
    DataInputStream dis = new DataInputStream(s.getInputStream());
    System.out.println(dis.readUTF());//readUTF()阻塞式,
    //只有执行完,才会执行别的,不管是否等待
    dis.close();
    s.close();//由里到外关
    
  }
}

import java.net.*;
import java.io.*;
public class TCPCl {
  public static void main(String[] args)throws Exception {
    Socket s = new Socket("127.0.0.1",6666);//指定本机ip,要连接的(Sever的)端口(申请连接)
    OutputStream os = s.getOutputStream();
    DataOutputStream dos = new DataOutputStream(os);
    dos.writeUTF("HELLO");
    dos.flush();
    dos.close();
    s.close();
  }
}

UDP

DatagramPacket以 包 装数据传输,

byte buf[] = new byte[1024];//造包裹用来存数据
DatagramPacket dp = new DatagramPacket(buf, buf.length);//接收数据,存在buf内,长度n
DatagramSocket ds = new DatagramSocket(5678);//放包裹位置
while(true)
{
ds.receive(dp);//接收数据扔进包袱


DatagramPacket dp = new DatagramPacket(buf, buf.length, 
  new InetSocketAddress("127.0.0.1", 5678)
  );//接收包裹,注明包裹所在ip,所发端口
DatagramSocket ds = new DatagramSocket(9999);//指明客户端占据端口
ds.send(dp);//发出
ds.close();


原创粉丝点击