黑马程序员_<<TCP>>
---------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
要建立连接,可以传输大量数据 通过三次握手玩成连接是可靠协议 必须建立连接,效率低,例如:下载,打电话
步骤:Socket和ServerSocket
简介:建立客户端和服务器端
通过Socket中的IO流进行数据传输
关闭socket
同样,客户端和服务器端是两个独立的应用程序
2.传输
客户端(Socket)和服务器端(ServerSocket)
客户端:在该对象创建的时候,就指定了主机地址,因为要先TCP必须要建立好连接,进行传输,或者使用connet方法来制定端口
客户端对象里面封装了字节读取流和写入流。这样更方便发送和接受数据。不断是服务端还是客户端,只要是对其传输的数据进行访问,那么就在Socket对象中获取流。
步骤:
1.创建服务,指定连接的主机和端口
2.获得输出流 然后输出数据
3.关闭服务
服务端:
1建立服务端的服务,ServerSocket,绑定端口
2获取连接过来的客户端对象 ServerSocket的accept方法。
3客户端如果发过来数据,那么服务端要使用对应的客户端对象,然后客户端对象的读取流来读取发过来的数据,打印在控制台上
4关闭服务端。
3.单向发出和读取
模拟客户端向服务端发数据,服务端读取客户端发送的数据后,然后输出。
package www.fuxi.wangluo; import java.io.BufferedReader;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务端 */public class TextServer { public static void main(String[] args) throws Exception { /** * 定义服务端,然后获得客户端服务对象 */ ServerSocket server = new ServerSocket(25001); Socket socket=server.accept(); /** * 获得客户端的读取流,这样读取文件内容 */ BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream())); /** * 获得目标文件的写入流,用来写入文件内容 */ PrintWriter pr=new PrintWriter(new FileWriter("newCopy.txt"),true); String line=null; while((line=br.readLine())!=null){ pr.println(line); } /** * 获得客户端的写入流,这样把信息反馈给客户端 */ PrintWriter prs=new PrintWriter(socket.getOutputStream()); prs.println("上传成功!"); pr.close(); prs.close(); br.close(); server.close(); } } 结果:上传成功 注意点:一定要定义结束标记,否则会不会停止上传,结束标记可以自定义,也可以使用Socket中自带的方法来结束。
---------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------