赞
踩
- 1.【服务端】启动,创建ServerSocket对象,等待连接。
- 2.【客户端】启动,创建Socket对象,请求连接。
- 3.【服务端】接收连接,调用accept方法,并返回一个Socket对象。
- 4.【客户端】Socket对象,获取OutputStream,向服务端写出数据。
- 5.【服务端】Scoket对象,获取InputStream,读取客户端发送的数据。
- 1.创建Socket通信管道
- 2.获取IO流对象(输出)
- 3.写数据
- 4.释放资源
- Socket socket = new Socket("IP地址",端口号);
- OutputStream os = socket.getOutputStream();
- os.write("需要写入的数据"); //可以进行流的增强
- os.close();
- 1.创建ServerScoket通信管道
- 2.连接客户端Socket对象(监听方法)
- 3.获取IO流对象(输入)
- 4.读数据
- 5.释放资源
- ServerSocket ss = new ServerSocket(端口号);
- Socket socket = ss.accept();
- InputStream is = socket.getInputStream();
- int ch = is.read(); //可以进行流的增强
- is.close();
记住就只有俩个点:建立通信管道获取输入输出流 + 同时写接收数据(易)和传输数据(涉及到键盘输入)
客户端代码:
- import java.io.*;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.util.Scanner;
-
- /*
- TCP通信 --2接收并反馈
- * */
- public class Client {
- public static void main(String[] args) throws IOException {
- System.out.println("===客户端启动===");
- //1、创建Socket通信管道 并连接至服务端
- Socket socket = new Socket(InetAddress.getLocalHost(),9999);
-
- //2、通过Socket管道 获得一个字节输出流
- OutputStream os = socket.getOutputStream();
- PrintStream ps = new PrintStream(os);//打印字节流就要将字节流os传参
- Scanner sc = new Scanner(System.in);
- while(true){
- System.out.println("请输入信息:");
- String msg = sc.nextLine();
- ps.println(msg);
- ps.flush();
-
- //接收服务端反馈
- BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- String Msg = bfr.readLine();
- System.out.println("服务端返回信息:" + Msg);
-
- }
-
-
- }
- }

服务端
- package com.itheima.b02TCPTest2;
-
- import java.io.*;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.Scanner;
-
- public class Server {
- public static void main(String[] args) throws IOException {
- System.out.println("===服务端启动===");
- //1、创建serversocket对象
- ServerSocket ss = new ServerSocket(9999);
-
- //2、通过socket通信管道 将监听信息返回
- Socket socket = ss.accept();
-
- //3、接收信息 收到的字节流 转换为字符流 再加上缓冲流
- BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
-
- //readLine 缓冲流读取的方法
- String msg;
- while((msg = bfr.readLine()) != null){
- System.out.println(socket.getRemoteSocketAddress() + "发送信息:" + msg);
-
- //服务端返回信息
- System.out.println("请输入你想回复的信息:");
- OutputStream os = socket.getOutputStream();
-
- PrintStream ps = new PrintStream(os);
- Scanner sc = new Scanner(System.in);
- ps.println(sc.nextLine());
- ps.flush();
- }
-
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。