黑马程序员——网络编程总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

什么是网络编程?

网络编程建立在公共协议TCP/IP或者IOS协议的基础上,通过套接字的服务机制实现不同主机的联系。

网络编程的通讯要素

IP地址

网络中设备的识别,本地回环地址为127.0.0.1,主机名:localHost

端口号

用于标识不同进程的逻辑地址

传输协议

常用的协议是:UDP和TCP

获取主机网络地址对象

InetAddress  inetaddress1 = InetAddress.getByName("www.baidu.com")或者

InetAddress inetaddress2 = InetAddress.getByName("192.168.1.1")

获取主机名

String hostname = inetaddress1.getHostName();

获取主机地址

String hostaddress = inetaddress1.getHostAddress();

套接字Socket

Socket是一种服务接口,它提供的服务能够实现数据包的传递

UDP协议特点

面向无连接,不可靠协议

数据报大小限制在64k内

传输速度快,容易丢包

TCP协议特点

面向连接,可靠协议,三次握手,建立连接

在连接中可进行大数据的传输

传输安全,速度慢

UDP传输

UDP发送数据报步骤:

1:建立DatagramSocket对象服务

DatagramSocket datagramsocket = new DatagramSocket();

2:建立数据报DatagramPacket对象

byte[] a = "hei ma cheng xu yuan".getBytes();

DatagramPacket  datagrampacket  = new DatagramPacket(a,a.length,InetAddress.getByName("192.168.1.1",10000);

3:发送数据包

datagramsocket.send(datagrampacket);

4:关闭Socket

datagramsocket.close();

UDP接收数据步骤

1:建立DatagramSocket对象服务

DatagramSocket datagramsocket = new DatagramSocket(10000);

2:建立数据报DatagramPacket对象

byte[] a = new byte[1024];

DatagramPacket  datagrampacket  = new DatagramPacket(a,a.length);

3:通过Socket服务的receive()方法把接收到的数据封装到已经准备好的数据包中

datagramsocket.receive();

4.通过接收到的数据包提供的方法,获取数据包中各种数据

返回主机对象

InetAddress inetaddress = a.getAddress();

获取主机名

String hostname = inetaddress1.getHostName();

获取主机地址

String hostaddress = inetaddress1.getHostAddress();

返回数据内容

byte[] data  = a.getData();

String b = new String(data,0,data.length());

返回端口号

int port  = a.getPort();

5,关闭Socket流

datagramsocket.close();

Tcp传输

Tcp客户端

1:建立套接字服务

Socket socket = new Socket(InetAddress.getByName("192.168.1.1",10000);

2:获取流

OutputStream output = socket.getOutputStream();

3:通过输入流写入数据

byte[] data  = "ke hu duan qing qiu lian jie".getBytes();

int len = output.write(data);

4:关闭流

socket.close();

Tcp服务端

1:建立套接字服务,并监听端口

ServerSocket serversocket = new ServerSocket(10000);

2:获取连接过来的客户端对象

Socket socket = serversockt.accept();

3:获取客户端连接过来的流,并读取相关数据

InputStream  input  = socket .getInputStream();

byte[] data = new byte[1024];

int len = data.read(data);

4.关闭流

serversocket.close();

URL

什么是URL

其实就是表示网页地址的字符串

建立URL对象

URL url1 = new URL("https://www.baidu.com/");

URL url2 = new URL("https://192.168.1.254:8080/myweb/demo.html");

获取URL对象方法

url2.getFile();获取文件名

url2.getHost();获取主机名

url2.getPort();获取端口号

url2.getPath();获取路径

url2.getProtocol();获取协议

url2.getQuery();获取查询部

连接到服务端

URLconnection urlconnection = url2.openConnection();

 1 练习
 2 /*
 3  * 编写一个聊天程序,有收数据的部分,有发数据的部分
 4  */
 5 package bolgtest;
 6 import java.io.*;
 7 import java.net.*;
 8 public class UdpTest {
 9  public static void main(String[] args)throws Exception {
10   DatagramSocket datagramsocket1 = new DatagramSocket();
11   DatagramSocket datagramsocket2 = new DatagramSocket(10000);
12
13   UdpSend send = new UdpSend(datagramsocket1);
14   UdpReceive receive = new UdpReceive(datagramsocket2);
15   Thread thread1 = new Thread(send);
16   Thread thread2 = new Thread(receive);
17   thread1.start();
18   thread2.start();
19
20  }
21 }
22 class UdpSend implements Runnable{
23  private DatagramSocket datagramsocket = null;
24  UdpSend(DatagramSocket socket){
25   this.datagramsocket = socket;
26  }
27  public void run(){
28   BufferedReader buffer = null;
29    try{
30      buffer = new BufferedReader(new InputStreamReader(System.in));
31     String str = null;
32     while( (str = buffer.readLine())!=null)
33     {
34      if("886".equals(str))
35       break;
36      byte[] data = str.getBytes();
37      DatagramPacket datagrampacket = new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.255"),10000);
38      datagramsocket.send(datagrampacket);
39     }
40    }catch(Exception e){
41     throw new RuntimeException("出错啦");
42    }
43    finally{
44     try{
45      buffer.close();
46     }catch(Exception e){
47      throw new RuntimeException("出错啦");
48     }
49    }
50 }
51 }
52
53 class UdpReceive implements Runnable{
54  private DatagramSocket datagramsocket = null;
55  UdpReceive(DatagramSocket socket){
56   this.datagramsocket = socket;
57  }
58  public void run(){
59   BufferedReader buffer = null;
60   while(true){
61    try{
62     byte[] data = new byte[1024];
63     DatagramPacket datagrampacket = new DatagramPacket(data,data.length);
64     datagramsocket.receive(datagrampacket);
65     String str = new String(datagrampacket.getData(),0,datagrampacket.getData().length);
66     String str2 = datagrampacket.getAddress().getHostAddress();
67     System.out.print(str2+":"+str);
68    }catch(Exception e){
69     throw new RuntimeException("出错啦");
70    }
71   }
72
73
74
75   }
76  }
 1 练习
 2 /*
 3  * 把客户端的一个文件传到服务端去,并且在服务端中存储起来
 4  */
 5 package bolgtest;
 6 import java.io.*;
 7 import java.net.*;
 8 public class ClientTest {
 9  public static void main(String[] args) {
10   try{
11    Socket socket = new Socket("192.168.1.101",10000);
12    BufferedWriter buffwriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
13    BufferedReader clientreader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
14    BufferedReader buffread = new BufferedReader(new FileReader("F:\\BaiduYunDownload\\client.txt"));
15    String str =null;
16    while((str = buffread.readLine())!=null){
17     buffwriter.write(str);
18     buffwriter.newLine();
19     buffwriter.flush();
20    }
21    socket.shutdownOutput();
22    String str1 = null;
23    while((str1 = clientreader.readLine())!=null){
24     System.out.println(str1);
25    }
26   }catch(Exception e){
27    System.out.println(e.getMessage());
28   }
29
30
31
32  }
33 }
34
35 package bolgtest;
36 import java.io.*;
37 import java.net.ServerSocket;
38 import java.net.Socket;
39 public class ServerTest {
40  public static void main(String[] args)throws Exception {
41   ServerSocket server = new ServerSocket(10000);
42   Socket socket = server.accept();
43   BufferedReader buffreader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
44   BufferedWriter buffwriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
45   PrintWriter printwriter = new PrintWriter(new FileWriter("F:\\BaiduYunDownload\\copy.txt"),true);
46   String str = null;
47   while((str = buffreader.readLine())!=null){
48    printwriter.println(str);
49   }
50   buffwriter.write("上传成功");
51   buffwriter.newLine();
52   buffwriter.flush();
53
54  }
55 }
56
57
58
59
60
61
62
63
64   
时间: 2024-08-27 11:41:51

黑马程序员——网络编程总结的相关文章

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

黑马程序员---网络编程之文件上传

------- android培训.java培训.期待与您交流! ----------. 网络编程 (1)用编程语言来实现计算机的资源共享和信息传递. 计算机网络:多台独立的计算机用网络通信设备连接起来的网络.实现资源共享和数据传递. (2)网络通信的三要素 A:IP地址 计算机在网络中的唯一标识. 现在使用的是:"点分十进制" B:端口 应用程序的的标记. C:协议 通信的规则. UDP:不建立连接,数据打包传输,数据有限制,数据不可靠,速度快. TCP:建立连接,数据无限制,数据可

黑马程序员------网络编程

1.1 InetAddress InetAddress:构造方法私有,不能直接创建对象. InetAddress getByName(String host):在给定主机名的情况下确定主机的ip地址. InetAddress getLocalHost():返回本地主机. InetAddress[] getAllByName(String host) ip.getHostAddress(), ip.getHostName() 1 示例1: 2 import java.net.InetAddress

黑马程序员—网络编程TCP(传输层完整篇)

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- Socket 要注意的是 流是否写完,应为有阻塞式的方法(read) s.shutdownoutput(); ServerSocket 保证服务器的持续性 s=ss.accept(); Socket对象要循环 为保证服务能多人使用,要开启线程. 一 package com.itheima.org; import java.io.File; import java.io.FileInputStream; impo

黑马程序员——网络编程

1.网络通讯要素:(1)找到对方的IP地址(2)数据要发送到对方指定的应用程序上.为了标识这些应用程序,给小河蟹应用程序都用数字进行标识.为了方便称呼这些数字,称为端口(3)定义通信规则,这个规则称为协议,国际组织定义了通用协议TCP/IP 2.网络模型:应用层:HTTP,FTP等传输层:UDP,TCP等网际层:IP 3.UDP传输和TCP传输的区别:    UDP:将数据源和目的封装成数据包,不需要建立连接    每个数据报大小限制在64k内    因为无连接,是不可靠协议    不需要建立连

黑马程序员——网络编程(上篇)

------ >Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java语言是第一个完全融入网络的语言,Java语言之所以适合编写网络应用程序有诸多有点.所有连入Internet的终端设备(包括计算机.PDA.打印机以及其他的电子设备)都有一个唯一的索引,这个索引被称为IP地址.现在Internet上的IP地址大多由四个字节组成,这种IP地址叫做IPv4.除了这种由四个字节组成的IP,在Internet上还存在一种IP,这种IP由16个字节组成,叫做I

黑马程序员——网络编程———聊天窗口的建立

接收端与发送端的简单演示 import java.io.*; import java.net.*; public class SocketDemo { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub System.out.println("发送端启动"); System.out.println(InetAddress.getLocalHost().g

黑马程序员——网络编程之CTP传输

TCP传输 Socket和ServerSocket,实现了两台机器间的套接字端点,绑定本机IP地址.建立客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket. //客户端部分 public class ClientA { private String filePath ; public String getFilePath() {return filePath;} public void setFilePath(String filePath ) { thi