网络编程

来源:互联网 发布:登陆传奇永恒网络异常 编辑:程序博客网 时间: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();
}
}


}


注:先运行接受端。





0 0
原创粉丝点击