------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
一:UDP,TCP
1,UDP不需要建立连接(寄包裹),每个数据包不超过64K,不可靠,速度快
2,TCP面向连接(打电话),通过三次握手完成连接,是可靠协议
二:Udp传输
1,udp发送端
calss UdpSend {
public static boid main(Strng args[]) {
//建立udpSocket服务
DatagramSocket ds = new DatagramSocket();
//确定数据,并将数据封装到数据包中
byte[] buf = "date".getBytes();
DataGramPacket dp =
new DataGramPacket(buf,buf.length,InetAddress.getByName(""),10100);
//通过Socket服务将数据发送
ds.send(dp);
//关闭资源
ds.close();
}
}
2,udp接收端
class UdpRece {
public static void main(String args[]) {
//创建udpSocket 并指定监听的端口号
DatagramSocket ds = new DatagramSocket(10100);
//定义数据包,用于存储数据
byte[] buf = new byte[1024];
DataGramPacket dp = new DataGramPacket(buf,buf.length);
//通过服务的receive()方法将接收到的数据存入数据包中
ds.receive(dp);
//通过数据包的方法获取其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
//关闭资源
ds.close();
}
}
三:TCP传输
1,客户端
//创建Socket服务,并指定要连接的主机和端口
Socket s = new Socket("192.168.1.254",8888);
//为了发送数据,应该获取socket流中的输出流
OutputStream out = s.getOutputStream();
out.write("data".getBytes());
s.close();
2,服务器端
//创建服务端的socket服务,并监听一个端口ServerSocket();
ServerSocket ss = new ServerSocket(8888);
//获取连接过来的客户端对象,accept()方法,该方法是阻塞式的
Socket s = ss.accept();
//客户端如果发过来数据,服务端使用对应的客户端对象,
获取该客户端对象的读取流读取客户端发送的数据
InputStream in = s.getInputStream();
//关闭资源
s.close();
3,练习(建立一个文本转换服务器)
class TransClient{
public static void main(String args[]) {
Socket s = new Socket("",8888);
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufo =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader bufi =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=bufr.readLine())!=null) {
if(line.equels("over"));
break;
bufo.write(line);
bufo.newLine();
bufo.flush();
String str = bufi.readLine();
System.out.println(str);
}
bufr.close();
s.close();
}
}
class TransServer{
public static void main(String args[]) {
ServerSocket ss = new ServerSocket("",8888);
Socket s = ss.accept();
BufferedWriter bufo =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader bufi =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=bufi.readLine())!=null) {
bufo.write(line.toUpperCase());
bufo.newLine();
bufo.fluse();
}
s.close();
ss.close();
}
}