黑马程序员_网络编程(2)

本文介绍了一个Java网络编程案例,包括文件拷贝、图片上传及并发登录验证等功能的实现。通过客户端和服务端的具体代码示例,展示了如何利用Java Socket API完成这些任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训java培训、期待与您交流! ----------


**需求2:拷贝文件

                             //****客户端:

                             class TCPClient{

                                public static void main(String[] args){

                                    Socket s =new Socket("192.168.1.253",10000);

                                    BufferedReaderbufr = new BufferedReader(new FileReader("g:\\demo.txt"));

                                    PrintWriter pw = newPrintWriter(s.getOutputStream(),true);

                                    String line = null;

                                    while((line = bufr.readLine())!=null){

                                        pw.println();

                                    }

                                    s.shutDownOutput();

                                    BufferedReader bufIn = newBufferedReader(new InputStreamReader(

                                                                s.getInputStream()));

                                    String retVal = bufIn.readLine();

                                    sop(retVal);

                                    bufr.close();

                                    s.close();

                                }

                             }

                             //****服务端:

                             class TCPServer{

                                public staticvoid main(String[] args){

                                    ServerSocketss = new ServerSocket(10000);

                                    Socket s = ss.accept();

                                    String ip =s.getInetAddress().getHostAddress();

                                    sop(ip);

                                       

                                    BufferedReaderbufIn = new BufferedReader(new InputStreamReader(

                                                                s.getInputStream()));

                                    PrintWriter out = new PrintWriter(newFileWriter"copy.txt",true);

                                    String line =null;

                                    while((line = bufIn.readLine())!=null){

                                        out.write(line);

                                    }

                                    PrintWriterpw = new PrintWriter(s.getOutputStream(),true);

                                    pw.println("上传成功");

                                    out.close();

                                    s.close();

                                    ss.close();

                                }

                             }

需求3:上传图片

                             //****客户端:

                             class TCPClient{

                                public staticvoid main(String[] args){

                                    Socket s =new Socket("192.168.1.253",10000);

                                    FileInputStreamfis = new FileInputStream("g:\\1.bmp");

                                    OutputStream out = s.getOutputStream();

                                    byte[] buf = new byte[1024];

                                    int len = 0;

                                    while((len = bufr.read())!=-1){

                                        out.write(buf,0,len);

                                    }

                                    s.shutDownOutput();

 

                                    InputStream in = s.getInputStream();

                                    byte[] bufIn = new byte[1024];

                                    int lenIn = in.read(bufIn);

                                    sop(new String(bufIn,0,lenIn);

                                    fis.close();

                                    s.close();

                                }

                             }

                             //****服务端:

                             class TCPServer{

                                public staticvoid main(String[] args){

                                    ServerSocketss = new ServerSocket(10000);

                                    Socket s =ss.accept();

 

                                    String ip =s.getInetAddress().getHostAddress();

                                    sop(ip);

                                    FileOutputStream fos = newFileOutputStream("g:\\copy.bmp");

                                    InputStream in = s.getInputStream();

                                    byte[] bufIn = new byte[1024];

                                    int lenIn = 0;

                                    while((lenIn=bufIn.read())!=-1){

                                            fos.write(bufIn,0,lenIn)

                                    }

 

                                    OutputStreamoutIn = s.getOutputStream();

                                    outIn.write("上传成功".getBytes());

                                    fos.close();

                                    s.close();

                                    ss.close();

                                }

                             }

需求5:客户端并发登陆

                                客户端通过键盘录入用户名,服务端对这个用户名进行校验

                                如果用户存在,在服务端现实xxx已登录,并在客户端现实欢迎xxx

                                如果用户不存在,在服务端现实xxx正在尝试登陆,并在客户端现实xxx用户不存在

                                最多登陆三次。

                             //****校验端:

                             class Userimplements Runnable{

                                private Sockets;

                                public User(){}

                                publicUser(Socket s){

                                    this.s=s;

                                }

                                public voidrun(){

                                    try{

                                        BufferedReaderbufrIn = new BufferedReader(

                                                new InputStream(s.getInputStream()))

                                        String name = bufrIn.readLine();

                                        if(name==null){

                                            sop("用户名为空");

                                            break;

                                        }

                                        BufferedReaderbufr = new BufferedReader(new FileReader("user.txt"));

                                        PrintWriter pw = new PrintWriter(s.getOutputStream(),true);

                                        String line = null;

                                        booleanflag = false;

                                        while((line= bufr.reanLine())!=null){

                                            if(line.equals(name)){

                                                flag= true;

                                                break;

                                            }

                                            if(flag){

                                                sop(name+"已登陆");

                                                pw.println("欢迎"+name);

                                                break;

                                            }else{

                                                sop(name+"正尝试登陆");

                                                pw.println(name+"用户不存在");

                                            }

 

                                        }

                                        s.close();

                                    }catch(Exceptione){

                                        thrownew RuntimeException("用户校验失败");

                                    }

                                }

                             }

                             //****客户端:

                             class LoginClient{

                                public staticvoid main(String[] args){

                                    Socket s =new Socket("192.168.1.253",10000);

                                    BufferedReader bufr = new BufferedReader(newInputStreamReader(System.in)));

                                    PrintWriterout = new PrintWriter(s.getOutputStream(),true);

                                    BufferedReaderbufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

                                    for(inti=0;i<3;i++){

                                        Stringline = bufr.readLine();

                                        if(line== null){

                                            sop("用户名不能为空!");

                                            break;

                                        }

                                        out.write(line);

                                        String retVal = bufIn.readLine();

                                        sop(retVal);   

                                    }

                                    bufr.close();

                                    s.close();

                                }

                             }

                             //****服务端:

                             class LoginServer{

                                public staticvoid main(String[] args){

                                    ServerSocketss = new ServerSocket(10000);

                                    while(true){

                                        Socket s= ss.accept();

                                        newThread(new User()).start();

                                    }

                                }

                             }

 

 

域名解析

我们在上网输入一个www.网址时,电脑首先会在我们本地的C:\WINDOWS\system32\drivers\etc\hosts文件中寻找网址对应的地址

如果找不到,才会向DNS服务器发送请求,DNS服务器就会把网址对应的地址返回到我们电脑,电脑才拿着地址去访问我们要找的服务器。

如果电脑在本地文件中找到网址对应的地址了,他就不会向DNS服务器发送请求,而是按照在本地文件中找到的地址去访问服务器。  所以我们可以在本地文件中修改网址对应的地址,不让这网址去访问服务器

如果我们直接输入123.0.0.1之类的地址,电脑就不会查找本地文件和DNS服务器,而是直接访问

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值