java-网络编程(TCP-服务端响应客户端)

 网络编程详解-TCP

  一,TCP协议的特点 
              面向连接的协议(有发送端就一定要有接收端)

     通过三次连接握手建立连接

  通过四次握手断开连接

  基于IO流传输数据

  传输数据大小没有限制

  速度慢但可靠

  二,TCP协议相关的两个类
       Socket(一个socket对象表示一个客户端对象)
             常用构造方法介绍

   Socket(String host, int  port)

        host参数为服务器的ip地址字符串

       port参数为服务器的端口号

  大家记忆的时候可以使用这一种记忆方式 :记住socket是个客户端对象就可以了,参数就想socket对象既然是客户端对象他就需要连接服务器,那么他需要什么呢,连接服务器肯定需要服务端的IP和地址才能够连接。

  三,常用方法介绍

  OutputStream    getOutputStream() 获取字节输出流(该字节输出可以向服务端输出数据,只能获取一次,调用该方法多少次,获取到的还是同一个对象)
  InputStream   getInputStream() 获取字节输入流(该字节输入流可以读取服务器端方式过来的数据,只能获取一次,调用该方法多少次,获取到的还是同一个对象)
  void   shutdownOutputStream() 关闭输出流(在socket里面作用就是告诉服务器端,数据已经传输完成,调用该方法以后获取到的输出流就不能使用了)
  void  close() 关闭资源
  int  getPort() 获取服务器端的端口
  InetAddress getInetAddress()

  四,获取服务器端的IP地址对象

   ServerSocket(一个该类对象就代表一个服务端对象)
                      常用构造方法介绍

      ServerSocket(int port)

      port参数为服务端的端口号

   常用方法介绍

       Socket  accept() 等待客户端连接,获取一个客户端对象
       InteAddress    getInteAdderss() 获取连接的客户端的ip对象
  

  五,网络编程(TCP-服务端响应客户端)代码

         1.客户端代码

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.IOException;
 4 import java.io.InputStreamReader;
 5 import java.io.OutputStreamWriter;
 6 import java.net.Socket;
 7 import java.util.Scanner;
 8
 9 public class UserClint_3 {
10     static Scanner sc = new Scanner(System.in);
11     public static void main(String[] args) throws IOException {
12         //1.创建客户端套接字
13         Socket s = new Socket("localhost", 152);
14         //2.创建客户端输出流
15         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
16         //3.用户输入用户和密码,并写入输出流
17         System.out.println("请输入用户名:");
18         String user = sc.nextLine();
19         System.out.println("请输入用户密码:");
20         String password = sc.nextLine();
21         bw.write(user);
22         bw.flush();
23         bw.newLine();
24         bw.write(password);
25         bw.flush();
26
27         //4.通知服务端客户端用户信息写入完毕
28         s.shutdownOutput();
29
30         //5.创建输入流来接受服务端响应的信息
31         BufferedReader br=  new BufferedReader(new InputStreamReader(s.getInputStream()));
32         String info = br.readLine();
33         //6.输出响应信息
34         System.out.println(info);
35         //7.关闭套接字
36         s.close();
37     }
38 }

  2.将客户登录信息放在在User.Properties文件中,持久化信息库 

1 username=lsx
2 pwd=123
3 username=wn
4 pwd=123

  3.服务器端代码

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStreamReader;
 6 import java.io.OutputStreamWriter;
 7 import java.net.ServerSocket;
 8 import java.net.Socket;
 9 import java.util.HashMap;
10 import java.util.Map;
11 import java.util.Properties;
12
13 public class UserServer_3 {
14     public static Map<String, String> User() throws  IOException{
15         //将用户信息存放在User.properties文件中
16         //创建properties类获取用户信息
17         Properties p = new Properties();
18         //通过load()方法读取用户信息
19         p.load(new FileInputStream("User.Properties"));
20         //通过getProperty()方法获取用户信息的键,得到用户信息的值
21         String user = p.getProperty("username");
22         String pwd = p.getProperty("pwd");
23
24         //创建map集合,将用户信息的键以及对应的值放入集合中
25         Map<String, String> map = new HashMap<>();
26         map.put("username", user);
27         map.put("pwd", pwd);
28         return map;
29     }
30     public static void main(String[] args) throws IOException {
31         //1.创建服务器端套接字
32         ServerSocket ss = new ServerSocket(152);
33         //2.监听客户端套接字
34         Socket s = ss.accept();
35         //3.创建输入流用来读取客户端发送的用户信息
36         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
37         //4.读取客户端发送的用户信息
38         String username = br.readLine();
39         String password = br.readLine();
40
41         //5.调用map集合,拿到map集合里面的用户信息和客户端发送的信息进行比对
42         Map<String, String> map = User();
43         //6.创建输出流用来响应客户端
44         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
45         //7.进行信息比对
46         if(map.get("username").equals(username)&&map.get("pwd").equals(password)){
47             //8.写入响应信息
48             bw.write("恭喜您,登录成功!");
49             bw.flush();
50         }else{
51             bw.write("登录失败,用户或用户密码错误!");
52             bw.flush();
53         }
54         //9.关闭客户端套接字
55         s.close();
56     }
57 }

java容器和数据结构详解:链接:https://pan.baidu.com/s/1jR9neu9JuTy4UpBN1p83bQ  提取码:lutu 

原文地址:https://www.cnblogs.com/topshark/p/10242520.html

时间: 2024-10-17 02:03:53

java-网络编程(TCP-服务端响应客户端)的相关文章

Java网络编程(TCP服务端)

1 package WebProgramingDemo; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.ServerSocket; 6 import java.net.Socket; 7 8 public class ServerSocketDemo { 9 10 /** 11 * @param args 12 * @throws IOException 13 */ 14 publi

第5章-unix网络编程 TCP/服务端程序示例

这一章主要是完成一个完整的tcp客户/服务器程序.通过一很简单的例子.弄清客户和服务器如何启动,如何终止,发生了某些错误会发生什么.这些事很重要的 客户端代码 #include "unp.h" //static void str_cli1(FILE*fp,int sockfd); int main(int argc,char *argv[]) { int sockfd; struct sockaddr_in servaddr; sockfd=Socket(AF_INET,SOCK_ST

JAVA网络编程-----tcp

java采用TCP传输时利用Socket和ServerSocket Socket和ServerSocket 建立客户端和服务端 建立连接后,通过Socket中的IO流进行数据的传输. 关闭Socket 同样,客户端与服务端是两个独立的应用程序. 演示tcp传输 1.   tcp分客户端和服务端 2.   客户端对应的对象是Socket,服务端对应的对象是ServerSocket. 客户端: 通过查阅socket对象,发现在该对象建立时,就可以连接指定主机, 因为tcp是面向连接的,所以在建立so

java 网络编程 TCP协议 java 服务器和客户端 java socket编程

一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.这次请求处理完毕,启动的线程消亡.如果客户端接收到 "OK" 之外的返回数据,会再次

java中socket创建服务端与客户端即时对聊

package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; impo

node.js模拟抄表 tcp服务端和客户端

2015-11-18 09:38:01 服务端 var net = require('net'); var server = net.createServer(function (socket) { socket.on('data', function (data) { console.log(data); // data = JSON.parse(data); console.log('此次需要的类型是:' + data.transType); if (data.order == 'order

Java网络编程(TCP协议-服务端和客户端交互)

客户端: 1 package WebProgramingDemo; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 import java.net.Socket; 7 import java.net.UnknownHostException; 8 9 public class SocketDemo { 10 11 /** 12 * @param args

java网络编程TCP传输—流操作—服务端反馈与客户端接收

在读取完流后,服务端会向客户端返回一些数据,告诉客户端,已经写完了. 在这里和”流操作—拿到源后的写入动作“差不多,客户端同样以byte与Buffered两种缓冲读取作为例子,同时,.也是希望大家给补充. 1.利用OutputStream向客户端回写,客户端用byte作为缓冲接收 向客户端回写: 1 //获取socket输出流,将上传成功字样传给客户端 2 OutputStream out=s.getOutputStream(); 3 out.write("上传成功".getBytes

Java网络编程TCP程序,服务器和客户机交互流程以及基本操作步骤。

1.什么是网络编程 网络编程其实就是实现两个计算机的数据交换(交互). 可以通过直接或间接的通过网络协议与其他的计算机进行通讯.(HTTP协议,TCP/IP协议等) 2.Tcp网络编程的实现流程 主要分为服务器端(Server)和客户端(Client). 通过这个图我们其实就可以了解了实现服务器和客户机交互过程是怎么样的了. 实现这些原理最重要的是Socket类也叫做套接字.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 服务器端 1.首先创建ServerSocket对象并