------- 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()
}
}