您的位置:首页 > 理论基础 > 计算机网络

黑马程序员_网络编程

2015-07-13 15:23 591 查看
一、网络编程

概念:不同地理位置的计算机进行通信。

三要素:Ip地址,端口号,协议

IP地址

网络中每一台计算机的标识。

Ip地址分为5类。

A类 1.0.0.0 到126.0.0.0

0.0.0.0 和127.0.0.0保留

B类 128.1.0.0到191.254.0.0

128.0.0.0和191.255.0.0保留

C 类 192.0.1.0 到223.255.254.0

192.0.0.0和223.255.255.0保留

D 类 224.0.0.0到239.255.255.255用于多点广播

E 类 240.0.0.0到255.255.255.254保留

255.255.255.255用于广播

端口:用于标识进程的逻辑地址

协议:制定的规则。包括Tcp 和UDP

UDP: 1.数据源和目的源封装成数据包

2.不需要建立连接

3 . 每个数据包的大小限制走64k

4.是不可靠的协议

5.不需要建立连接,速度快

TCP: 1.建立连接,形成数据传输通道。

2.数据大小无限制

3,通过3次握手建立连接

4,可靠的协议

5. 必须建立连接,速度慢

二、Socket机制

它为网络编程提供一种机制,包装了端口和IP地址。

通信两端都有Socket. 网络通信其实就是Socket通信。 网路编程也叫Socket编程或套接字编程

三、InetAddress类

它是一个IP地址包装类,没有构造方法,找静态方法直接使用类名调用或找静态方法中返回值是InerAddress.通过这个方法获取对象

方法: public static InetAddress getByName(String host)// 通过主机名取的IP地址(对象形式)

public String getHostAddress()// 返回IP地址字符串

public String getHostName() //根据IP获取主机名字

四、UDP 接收数据

1.发送数据

思路: 1.建立发送端Socket服务对象

2.创建数据,并装包

3.放送数据

4,释放资源

class sendData{

public static void main(String[] args){

DatagramSocket ds = new DatagramSocket;//封装数据源

String str = "hello";//创建数据

byte[] bytes = str.gerBytes();

int length = bytes.length();

InetAddress adress = InesAddress.getByName(192.168.2.4);

int port = 123;

DatagramPacket dp = new DatagramPacket(bytes,lenght,address,port);//创建包

ds.seng(dp);//放松数据

ds.close();//释放资源

}

}

2.接收数据。

思路:1.建立接收端Socket服务对象

2.创建数据包

3.调用接收方法。

4,解析数据包,把数据显示在控制台上,

5,释放资源

代码:

class ReceiveData{

publci static void main (String[] str){

DatagramSocket ds = new DatagramSocket(123);// 创建接收端对象

byte[] bytes = new byte[1024];

int lenght = bytes.lenght;

DatagramPacket dp = new DatagramPacket( bytes,lenght);//创建数据包

ds.receive(dp);//调用接收方法

InerAddress address = dp.getAddress();

String ip = address.getHostAddress() ;

byte[] bytes1= dp.getData();//解析数据

Stirng str = new String( bytes,o,bytes.lenght);

system.out.println(ip+..........+str);

ds.close();//释放资源

}

}

五、TCP协议

1.客户端:、

思路:1.:创建客户端的Socket对象

2.:建立连接

3.:获取输出流,写数据即可

4.:释放资源

代码:

public class ClientDemo {

public static void main(String[] args) throws IOException {

// 创建客户端的Socket对象,建立连接

Socket s = new Socket("192.168.3.100", 10010);

// 获取输出流,写数据即可

// public OutputStream getOutputStream()

OutputStream os = s.getOutputStream();

os.write("hello,tcp,我来了".getBytes());

// 释放资源

s.close();

}



2.服务器

思路:

1.创建服务器端Socket对象

2.:监听连接

3.:获取输入流,读取数据,并显示

4.释放资源

public class ServerDemo {

public static void main(String[] args) throws IOException {

// 创建服务器端Socket对象

ServerSocket ss = new ServerSocket(10010);

// 监听连接

Socket s = ss.accept();//阻塞

// 获取输入流,读取数据,并显示

InputStream is = s.getInputStream();

byte[] bys = new byte[1024];

int len = is.read(bys);//阻塞

String client = new String(bys, 0, len);

System.out.println(client);

// 释放资源

s.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: