A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM汪磊 高级黑马   /  2013-4-9 22:30  /  1383 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM汪磊 于 2013-4-10 12:42 编辑

为什么如下程序编译时提醒:进行语法分析时已到达文件结尾。

import java.io.*;
import java.net.*;
class  TClient
{
        public static void main(String[] args) throws Exception
        {
                Socket s=new Socket("127.0.0.1",10002);

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

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

                BufferedReader bufIn=
                        new BufferedReader(new InputStreamReader(s.getInputStream()));
               
                for(int x=0;x<3;x++)
                {
                        String line=bufr.readLine();
                        if(line==null)
                                break;
                        out.println(line);

                        String info=bufIn.readLine();

                        System.out.println("info:"+info);
                        if(info.contains("欢迎"))
                                break;

                }

                bufr.close();
                s.close();
}

class UserThread implements Runnable
{
        private Socket s;
        UserThread(Socket s)
        {
                this.s=s;
        }
        public void run()
        {
                String ip = s.getInetAddress().getHostAddress();
                System.out.println(ip+"....connected");
                try
                {
                        for(int x=0;x<3;x++)
                        {
                                //获取客户端发过来的用户名
                                BufferedReader bufIn=
                                        new BufferedReader(new InputStreamReader(s.getInputStream()));

                                String name=bufIn.readLine();

                                BufferedReader bufr=
                                        new BufferedReader(new FileReader("1.txt"));

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

                                String line=null;

                                boolean flag=false;
                                while((line=bufr.readLine())!=null)
                                {
                                        if(line.equals(name))
                                        {
                                                flag=true;
                                                break;//用户存在就结束查找
                                        }
                                }

                                if(flag)
                                {
                                        System.out.println(name+",已登录");
                                       
                                        out.println(name+",欢迎光临");
                                        break;
                                }
                                
                                else
                                {
                                        System.out.println(name+",尝试登录");
                                       
                                        out.println(name+",用户名不存在");
                                }
                        }
                        s.close();
                }
                catch (Exception e)
                {
                        throw new RuntimeException(ip+"校验失败");
                }
        }
}

class TServer
{
        public static void main(String[] args) throws Exception
        {
                ServerSocket ss=new ServerSocket(10002);

                while(true)
                {
                        new Thread(new UserThread(s)).start();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
你这段代码本身就有语法错误  TClient这个类的末尾少了半个大括号

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
少括号了,这个问题,我老是碰到,我和这个问题太熟悉了。
回复 使用道具 举报
我刚编译了一下你的程序,还有一个错误,
C:\Users\liuce\Desktop>javac TClient.java
TClient.java:107: 错误: 找不到符号
                        new Thread(new UserThread(s)).start();
                                                  ^
  符号:   变量 s
  位置: 类 TServer
1 个错误
回复 使用道具 举报
你user类中接收的是一个Socket对象,而你传入的是ServerSocket对象,

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
常遇到这个错误,少括号了。
建议在EditPlus里面把视图工具里面的匹配括号高亮选中,后继写的时候就比较方便看到哪里少括号了。
回复 使用道具 举报
若还有问题,继续追问; 没有的话,将帖子分类改成【已解决】哦~

点进自己的帖子,编辑->标题左侧有下拉菜单->改变分类->保存~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马