网络编程
来源:互联网 发布:登陆传奇永恒网络异常 编辑:程序博客网 时间:2024/05/29 08:52
IP地址:计算机的网络地址。
端口:程序接受数据的入口。(自己写的程序最好在1024端口号以上,因为1024一下大多被系统占用了)
UDP协议和TCP协议:
UDP:用户数据报协议,不可靠传输。(此协议传输的数据就像快递公司一样,寄出去了但有丢失的危险,而且丢失了数据它还不负责!)
TCP:传输控制协议,可靠传输。(专线传输,安全,快,但成本高,而且不适用于多台计算机对联)
TCP和UDP数据包(也叫数据帧)的基本格式:
协议类型-源IP-目标IP-源端口-目标端口-帧序号-帧数据
本地的域名解析文件:
c:\Windows\System32\drivers\etc\hosts
DatagramPacket类:
作用:打包数据。
DatagramSocket类:
作用:发送和接受数据。
InetAddress类:
作用:存储IP地址对象。
一个简单的发送数据和接受数据程序:
package test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
//发送端
public class DatagramSocketSend {
public static void main(String[] args) {
System.out.println("发送端:");
Scanner in = new Scanner(System.in);
String s = in.next();
try {
DatagramSocket ds = new DatagramSocket();
//String s = "我来开车了哦!";
byte[] e = s.getBytes();
DatagramPacket pp = new DatagramPacket(e,e.length,InetAddress.getByName("小美的计算机"),8980);
//InetAddress.getByName("127.0.0.1")最好用此方法,因为127.0.0.1表示的是本机的IP地址(因为你对别人发送文件不可能知道别人的计算机名,
//但知道别人的IP地址),但是在本地域名解析文件里面127.0.0.1被注释掉了,需要把它前面的*去掉就OK了。
//开端口一般开1024端口之上
ds.send(pp);
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in.close();
}
}
package test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
//接收端
public class DatagramSocketReceive {
public static void main(String[] args) {
System.out.println("接收端:");
try {
DatagramSocket dd = new DatagramSocket(8980);
byte[] bb = new byte[1024];
DatagramPacket dp = new DatagramPacket(bb, bb.length);
dd.receive(dp);
String ss = new String(dp.getData(),0,dp.getLength());
System.out.println(ss);
dd.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:先运行接受端。
端口:程序接受数据的入口。(自己写的程序最好在1024端口号以上,因为1024一下大多被系统占用了)
UDP协议和TCP协议:
UDP:用户数据报协议,不可靠传输。(此协议传输的数据就像快递公司一样,寄出去了但有丢失的危险,而且丢失了数据它还不负责!)
TCP:传输控制协议,可靠传输。(专线传输,安全,快,但成本高,而且不适用于多台计算机对联)
TCP和UDP数据包(也叫数据帧)的基本格式:
协议类型-源IP-目标IP-源端口-目标端口-帧序号-帧数据
本地的域名解析文件:
c:\Windows\System32\drivers\etc\hosts
DatagramPacket类:
作用:打包数据。
DatagramSocket类:
作用:发送和接受数据。
InetAddress类:
作用:存储IP地址对象。
一个简单的发送数据和接受数据程序:
package test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
//发送端
public class DatagramSocketSend {
public static void main(String[] args) {
System.out.println("发送端:");
Scanner in = new Scanner(System.in);
String s = in.next();
try {
DatagramSocket ds = new DatagramSocket();
//String s = "我来开车了哦!";
byte[] e = s.getBytes();
DatagramPacket pp = new DatagramPacket(e,e.length,InetAddress.getByName("小美的计算机"),8980);
//InetAddress.getByName("127.0.0.1")最好用此方法,因为127.0.0.1表示的是本机的IP地址(因为你对别人发送文件不可能知道别人的计算机名,
//但知道别人的IP地址),但是在本地域名解析文件里面127.0.0.1被注释掉了,需要把它前面的*去掉就OK了。
//开端口一般开1024端口之上
ds.send(pp);
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in.close();
}
}
package test;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
//接收端
public class DatagramSocketReceive {
public static void main(String[] args) {
System.out.println("接收端:");
try {
DatagramSocket dd = new DatagramSocket(8980);
byte[] bb = new byte[1024];
DatagramPacket dp = new DatagramPacket(bb, bb.length);
dd.receive(dp);
String ss = new String(dp.getData(),0,dp.getLength());
System.out.println(ss);
dd.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注:先运行接受端。
0 0
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 网络编程
- 怎么搭建公司内部Maven服务器
- java事件驱动与线程结合
- 内部类
- 【RxJava 实践系列】(三)线程控制 — Scheduler
- 软考总结——装饰模式
- 网络编程
- 38. Count and Say
- 神控(蓝宇等)的优越性,从FHSS与DSSS的优缺点比较
- CSDN第一篇博客文
- android-->自定义view,TopBar模板
- 序列化
- visual studio 2015 warning MSB3246
- Handler 机制
- 在opencv3中的机器学习算法