网络编程-UDP-TCP)
UDP 特点:(面向无连接)(聊天)
1、将数据及源和目的封装成数据包中,不须要建立连接。(封包。无连接)
2、每一个数据包的限制大小在64k内。(小数据)
3、因无连接。是不可靠协议。(不可靠。丢数据)
4、不须要建立连接,速度快。(速度快)
TCP 特点:(面向连接)(下载)
1、建立连接,形成数据传输的通道。(传输,连接)
2、在连接中进行大数据量传输。(大数据)
3、通过三次捂手完毕连接。是可靠协议。(可靠。在? 我在。我知道你在了)
4、必须建立连接,效率会稍低。(速度慢)
(网络编程-Socket)(Socket也称套接字)
1、Socket就是为网络服务提供的一种机制。
2、通信的两端都有Socket。
3、网络通信事实上就是Socket间的通信。
4、数据在两个Socket间通过IO传输。
注意:Socket能够理解为码头,有码头才有船能够对货(数据)进行装卸(读写)。
可是因为船运输的方式不同。所以有了不同的服务方式。
一个是UDP,另外一个是TCP。
练习:建立一个文本转换server
* client给服务端发送一个文本文件,服务端会将文本转成
* 大写在返回给client
* 并且client能够不断的进行文本转换,当client输入over时思路:
* client
* 既然是操作设备上的数据,那么就能够使用IO技术,并依照
* IO的操作规律来思考,
* 源:键盘录入
* 目的:网络设备,网络输出流
* 并且操作的是文本数据。能够选择字符流。
* 步骤:
* 1.建立服务
* 2.获取键盘录入
* 3.将数据发给服务端
* 4.服务端返回大写数据
* 5.关闭资源
public static void main(String[] args) throws Exception {
Socket s=new Socket();
// 定义读取键盘数据的流对象
BufferedReader bufr=new
BufferedReader(new InputStreamReader(System.in));
// 定义目的,将数据写入到socket输出流。发给服务端
/*BufferedWriter bufout=new
BufferedWriter(new OutputStreamWriter(s.getOutputStream()));*/
// 定义一个socket读取流,读取服务端返回的大写信息
BufferedReader bufin=new
BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out=new PrintWriter(s.getOutputStream(),true);
String line=null;
while ((line=bufr.readLine())!=null) {
if ("over".equals(line)) {
break;
}
out.println(line);
/*bufout.write(line);
bufout.newLine();
bufout.flush();*/
String str=bufin.readLine();
System.out.println("servce:"+str);
}
bufr.close();
s.close();
}
}
服务端
*源:socket读取流
*目的:socket输入流
public static void main(String[] args) throws Exception {
ServerSocket ss=new ServerSocket(10005);
Socket s=ss.accept();
// 读取socket读取流中的数据
BufferedReader bufin=new
BufferedReader(new InputStreamReader(s.getInputStream()));
// 目的。socket输出流。将大写数据写入到socket输出流。并发送给client
BufferedWriter bufout=new
BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String line=null;
while ((line=bufin.readLine())!=null){
System.out.println(line);
bufout.write(line.toUpperCase());
bufout.newLine();
bufout.flush();
}
s.close();
ss.close();
}
}