TCP之传输对象 客户端传输user对象到服务端 验证登录是否合法
Server.java
package com.sxt.tcp4; import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException; import com.sxt.net.bean.User; /* 基于TCP协议的Socket编程
* 双向通信:传输对象
* 通过IO流传输数据
* 功能:向服务端发送user对象 看是否满足登录条件
*
*/
//服务端
public class Server {
public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException {
System.out.println("服务端准备就绪!");
ServerSocket server = new ServerSocket(8888);
while(true){
//注意:获取客户端的对应的socket!!
Socket accept = server.accept();
//读 输入流 对象输入流
ObjectInputStream ois = new ObjectInputStream(accept.getInputStream());
User user =(User) ois.readObject(); String message = "";
if(user.getUserName().equals("admin") && user.getPassWord().equals("123456")){
message = "登录成功!";
}else{
message = "登录失败!";
}
System.out.println(message); }
}
}
Client.java
package com.sxt.tcp3;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
/*
* 基于TCP协议的Socket编程
* 传输对象
*/
import java.net.Socket;
import java.util.Scanner; import com.sxt.net.bean.User; //ctrl+shift+O
/*
* 客户端
*/ public class Client {
public static void main(String[] args) throws IOException{
Scanner input = new Scanner(System.in);
System.out.println("输入用户名:");
String userName = input.next();
System.out.println("输入密码:");
String passWord = input.next();
User user = new User(userName, passWord); Socket socket = new Socket(InetAddress.getLocalHost(),8888);
//写到服务端 socket获取输出流
OutputStream outputStream = socket.getOutputStream();
//传输对象 对象流(包装流)
ObjectOutputStream oos = new ObjectOutputStream(outputStream);
//写数据(user对象)
oos.writeObject(user); oos.close();//否则报错!
socket.close();
}
}
User.java
package com.sxt.net.bean;
import java.io.Serializable;
public class User implements Serializable{ //对象流 序列化,否则会报错
private static final long serialVersionUID = 1L;
private String userName;
private String passWord;
public User(String userName, String passWord) {
super();
this.userName = userName;
this.passWord = passWord;
}
public User() {
super();
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "User [userName=" + userName + ", passWord=" + passWord + "]";
}
}
TCP之传输对象 客户端传输user对象到服务端 验证登录是否合法的更多相关文章
- (8)Linux(客户端)和Windows(服务端)下socket通信实例
Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows Client端 #include <st ...
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ...
- C#在服务端验证客户端证书(Certificate)
使用https协议进行通讯的时候可以设置双向证书认证,客户端验证服务端证书的方法前面已经介绍过了,现在说一下在服务端验证客户端证书的方案. 这里给出的方案比较简单,只需要在Service端的配置文件中 ...
- 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)
查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...
- WebSocket安卓客户端实现详解(三)–服务端主动通知
WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...
- http系列--HTTP2.0新特性:二进制传输,多路复用,Haeder压缩,服务端push,QUIC协议
一.前言 HTTP 2.0 相比于 HTTP 1.X,可以说是大幅度提高了 web 的性能. 在 HTTP 1.X 中,为了性能考虑,我们会引入雪碧图.将小图内联.使用多个域名等等的方式.这一切都是因 ...
- webservice 服务端例子+客户端例子+CXF整合spring服务端测试+生成wsdl文件 +cxf客户端代码自动生成
首先到CXF官网及spring官网下载相关jar架包,这个不多说.webservice是干嘛用的也不多说. 入门例子 模拟新增一个用户,并返回新增结果,成功还是失败. 大概的目录如上,很简单. Res ...
- 如何创建一个客户端回调:js获得服务端的内容?
答案:表面上看去就是前端的js调用服务的C#方法,本质就是ajax,通过XMLHttpRequest对象和服务端进行交互.回调:就说回过头来调用,按理说js是一种脚本语言,怎么能用来调用服务端的呢?就 ...
- 使用rsync在linux(客户端)拉取windows(服务端)数据
windows 服务端ip:172.18.18.70 Linux客服端ip: 172.18.54.11 1.windows服务端下载cwRsync Server , 地址:https://www.ba ...
随机推荐
- Java数据结构和算法(八)--红黑树与2-3树
红黑树规则: 1.每个节点要么是红色,要么是黑色 2.根节点都是黑色节点 3.每个叶节点是黑色节点 3.每个红色节点的两个子节点都是黑色节点,反之,不做要求,换句话说就是不能有连续两个红色节点 4.从 ...
- bzoj 2662 [BeiJing wc2012]冻结——分层图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2662 这种的都是分层图. #include<iostream> #include ...
- linux系统之间互传文件
参考网址:http://blog.csdn.net/shaoxiaohu1/article/details/23191637 1.文件复制:本机->远程服务器: scp /home/shaoxi ...
- IDEA设置谷歌浏览器和火狐浏览器打开
我们在软件的功能栏中选择file,然后使用鼠标点击settings,进入到软件的详细设置界面 进入后,我们可以看到很多设置项,然后我们使用鼠标依次点击左侧的tools和web browsers,进 ...
- svn清理以下路径失败
网上说是svn的数据库挂了 删除里免得数据就好了 用sqllite...嗯? 那我还得下载一个?超过五秒钟的工作我是不会去做的 打开navicat 清空表 再次尝试清理
- Dockerfile Tomcat镜像制作
FROM centos MAINTAINER taohaijun "thjtao@126.com" WORKDIR /home #上传安装包 COPY jdk-8u131-linu ...
- arcgis图层控制
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- ASP.NET自定义控件组件开发 第一章 第一章:从一个简单的控件谈起
第一章:从一个简单的控件谈起 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第三 ...
- DirectX11笔记(一)--配置DirectX工程
原文:DirectX11笔记(一)--配置DirectX工程 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010333737/article/d ...
- 计算机网络3.2&3.3(第二节介质&第三节多路复用)
有限的传播介质 双绞线 双绞线电缆 双绞线总结 2 同轴电缆 粗细电缆的传输距离 现在基本都用双绞线和光线 同轴电缆用于居民小区和家庭使用 3 光纤 光纤中以光信号的形式进行传播 正如我们现在看到这样 ...