1.网络编程概念:
(1).网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑……
(2).网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!
2.网络编程三要素:
A:IP地址 B:端口 C:协议
A:IP地址 B:端口 C:协议
3.IP地址 = 网络地址 +主机地址
网络地址:标识计算机或网络设备所在的网段
主机地址:标识特定主机或网络设备
网络地址:标识计算机或网络设备所在的网段
主机地址:标识特定主机或网络设备
4查看本机的IP地址
ipconfig
测试网络是否通畅
ping + IP地址
ipconfig
测试网络是否通畅
ping + IP地址
5.网络通信协议
为在网络中不同的计算机之间进行通信而建立的规则、标准或约定的集合
TCP协议(Transmission Control Protocol 传输控制协议)
面向连接的、可靠的、基于字节流的传输通信协议
UDP协议(User Datagram Protocol 用户数据报协议)
无连接的协议,在传输数据之前,客户端和服务器并不建立和维护连接
为在网络中不同的计算机之间进行通信而建立的规则、标准或约定的集合
TCP协议(Transmission Control Protocol 传输控制协议)
面向连接的、可靠的、基于字节流的传输通信协议
UDP协议(User Datagram Protocol 用户数据报协议)
无连接的协议,在传输数据之前,客户端和服务器并不建立和维护连接
UDP协议的Socket网络编程步骤:
1.利用 DatagramPacket 对象封装数据报
2.利用 DatagramSocket 发送数据报
3利用 DatagramSocket 接收数据报
4利用 DatagramPacket 处理数据报
3利用 DatagramSocket 接收数据报
4利用 DatagramPacket 处理数据报
示例:
第一部分
DatagramSocket ds=new DatagramSocket(1086);
byte[] bys = new byte[1024];
int len = bys.length;
DatagramPacket dp = new DatagramPacket(bys, len);
int len = bys.length;
DatagramPacket dp = new DatagramPacket(bys, len);
ds.receive(dp);
byte[] by = dp.getData();
int length = dp.getLength();
int length = dp.getLength();
InetAddress address = dp.getAddress();
String ip = address.getHostAddress();
String ip = address.getHostAddress();
String s = new String(by, 0, length);
System.out.println(ip + "---" + s);
System.out.println(ip + "---" + s);
ds.close();
第二部分:
DatagramSocket ds=new DatagramSocket();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
byte [] bys="呵呵呵".getBytes();
int num=bys.length;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
byte [] bys="呵呵呵".getBytes();
int num=bys.length;
InetAddress address=InetAddress.getByName("192.168.60.7");
int port=1086;
DatagramPacket dp=new DatagramPacket(bys,num, address,port);
DatagramPacket dp=new DatagramPacket(bys,num, address,port);
ds.send(dp);
ds.close();
ds.close();
基于TCP协议的Socket网络通信
示例:
第一部分
Socket sk=new Socket("192.168.60.7",20004);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
String line=null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
InputStream is=sk.getInputStream();
byte [] by=new byte[1024];
int num=is.read(by);
String h=new String(by, 0, num);
System.out.println("Service:\t"+h);
}
//br.close();
//bw.close();
sk.close();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
String line=null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
InputStream is=sk.getInputStream();
byte [] by=new byte[1024];
int num=is.read(by);
String h=new String(by, 0, num);
System.out.println("Service:\t"+h);
}
//br.close();
//bw.close();
sk.close();
第二部分:
//1.创建对象
ServerSocket sk=new ServerSocket(20004);
//2.监听
Socket s=sk.accept();
//打包数据
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedReader bw=new BufferedReader(new InputStreamReader(System.in));
OutputStream os=s.getOutputStream();
String line=null;
while((line=br.readLine())!=null){
System.out.println("Client \t"+line);
os.write(bw.readLine().getBytes());
}
//释放资源