------- android培训、java培训、期待与您交流! ----------
一.网络概述
七层协议,了解一下。应用层 ,表示层,会话层,传输层,网络。数据链路层,物理层
二.IP地址
InetAdress i=InetAdress.getLocalHost();获取本地主机信息 包括 IP地址和主机名
i.getHostAdress()
i.getHostName()
getAllByteName("www.baidu.com")通过主机名获得IP地址数组
三.网络编程
TCP面向有链接
UDP面向无连接
udp服务
步骤:1.建立UDP服务,建立数据对象Socket
DatagramSocket ds=new DategramSocket(1001)
2.封装数据包
byte[] buf="你好".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.101"),1000);
3.ds.send(dp);发送信息
4.关闭资源
ds.close()
接收端
步骤
1.DatagramSocket ds=new DatagramSocket(1000)
2.byte[] buf=new byte[1024]
3.封装起来
DatagramPacket dp=new DatagramPacket(buf,buf.length)//定义接收数据包
4.ds.receive(dp)
5.然后随便取
TCP有链接服务
客户端
建立socket对象
Socket s=new Socket(“192.168.0.011”,1005);目的主机和端口
建立输出流
OutputStream out=s.getOutputStream();
out.write("TCP..".getBytes());
s.close();
服务端
建立ServerSocket ss=new ServerSocket(1005)监听自己的1005端口
Socket s=ssaccept();阻塞式
String ip=s.getInetAddress().getHostAdress
获取数据
InputStream in=s.getInputStream()
再用 in.read()方法进行读写了
s.close();//关闭客户端
ss.close();//关闭服务端
实例练习
文本操作字符流,提高效率 ,加入缓冲 import java.io.*; import java.net.*; class TransClient { public static void main(String[] args) { Socekt s=new Socket("192.168.1.254",10005); BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//玩文本最方便是字符流 BufferedReader bufrIn=new BufferedReader(new InputStream(s.getInputStream())); String line=null; while((line=bufr.readLine())!=null) { if("over".equlas(line)) break; bufwOut.write(line); bufwOut.newLine(); bufwOut.flush(); String str=bufrIn.readLine(); } } s.close(); bufr.close(); } class TranServer { public static void main(String[] args) { ServerSocket ss=new ServerSocket(10005); Socket s=ss.accept(); Sting ip=s.getInetAdrress().getHostAddress(); BufferedReader bufrIn=new BufferedReader(new InputStream(s.getInputStream())) BufferedWriter bufwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); String line=null; While((line=bufrIn.readLine())!=null) { bufwOut.write(line.toUpperCase()); bufwOut.newLine(); bufwOut.flush(); } s.close(); ss.close() } }