网络编程
网络编程不等于网站编程
作为网关的机器,一搬有两个网卡,一个网卡写着内网的IP,另一个写着外网的IP
TCP编程
Socket:
- 两个java应用程序可通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个Socket。
- Socket通常用来实现client-server连接
- java.net包中定义的两个类Socket(用于客户端)和ServerSocket(用于服务器端),分别用来实现双向连接的client和server端。
- 建立连接所需的寻址信息为远程计算机的IP地址和端口号(Port number),端口号又分UDP端口和TCP端口,各有65536个端口。
- 先启动服务器端,再启动客户端。
TCP Socket通信模型
Server端:
ServerSocket s(port #)
s.accept() //等待连接
Socket 对象
OutputStream
InputStream
Socket.close();
Client端:
Socket(host,port #)
OutputStream
InputStream
Socket.close()
UDP编程
UDP DatagramSocket通信模型
Server端:
DatagramSocket ds=new DatagramSocket(5555);//这个5555是UDP的端口,TCP的5555端口还可以用
DatagramPacket数据包:
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);//用dp这个数据包来装数据
用String来显示数据包里面的数据:
String s=new String(buf,0,dp.getLength());
Client端:
byte[] byf=(new String("hello")).getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",5555));
DatagramSocket ds=new DatagramSocket(9999);
ds.send(dp);
ds.close();