java学习之简单的网络编程

来源:互联网 发布:php开发规范文档 编辑:程序博客网 时间:2024/05/22 09:01

在学习网络编程的过程中,简单写了一下客户端和服务器的小demo

package Ray.net2;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Server {static ServerSocket server = null;static ObjectInputStream ois = null;static DataOutputStream dos= null;static Socket accept=null;public static void main(String[] args) {try {server= new ServerSocket(8000);while(true){accept= server.accept();Runnable r = new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubInputStream is;try {is = accept.getInputStream();ois = new ObjectInputStream(is);OutputStream os = accept.getOutputStream();dos= new DataOutputStream(os);User user = (User)ois.readObject();boolean flag = false;if("marie".equals(user.getUsername())&&"123456".equals(user.getPassword())){flag =true;}dos.writeBoolean(flag);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};new Thread(r).start();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

package Ray.net2;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import java.net.Socket;import java.util.Scanner;public class Client {public static void main(String[] args) {Socket client = null;DataInputStream dis=null;Scanner in = new Scanner(System.in);ObjectOutputStream oos =null;try {client= new Socket("127.0.0.1", 8000);OutputStream os = client.getOutputStream();oos= new ObjectOutputStream(os);User user =new User();String username = in.nextLine();String password = in.nextLine();user.setUsername(username);user.setPassword(password);oos.writeObject(user);InputStream is = client.getInputStream();dis= new DataInputStream(is);boolean flag = dis.readBoolean();if(flag){System.out.println("yes");}else{System.out.println("error");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {if(dis!=null)dis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(oos!=null)oos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
package Ray.net2;import java.io.Serializable;public class User implements Serializable{/** *  */private static final long serialVersionUID = 1L;private String username;private String password;public User() {//super();// TODO Auto-generated constructor stub}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;}@Overridepublic String toString() {return "User [username=" + username + ", password=" + password + "]";}}
需要注意的是创建一个对象时,如果传数据,需要对该对象进行序列化,还有就是,如果觉得代码的一部分每次只需调用一次那么,我们可以使用内部类,还有一点就是对我编程小白来说,每次需要先启动服务器,这也是我在测试过程慢慢掌握的。


原创粉丝点击