[Java] 【源码】新手初探java网络编程——socket接口实现简单的客户机/服务器程序

来源:互联网 发布:淘宝销量可以刷吗 编辑:程序博客网 时间:2024/05/20 06:06

首发于吾爱破解论坛,地址https://www.52pojie.cn/thread-643731-1-1.html 此帖作者也是我本人

也是我CSDN第一次发博

实话说挺紧张的,这里大佬好多,我只是萌新大学生一个,见笑了

最近上计算机网络与通信技术的课,老师布置了这样一个任务:1、 请在C、C++、Java、Python等语言中选取一种,在socket接口上实现一个简单的客户机/服务器程序。2、 客户机向服务器发送两次数据,服务器求和后显示,并向客户机返回结果,客户机收到回应后显示结果。

正好在学习java中,于是选择java编写
(刷了几天黑马程序员 毕向东老师的java视频 关键的部分和代码记下来了 很多都是毕老师的代码我改写,很感谢毕老师


源码:

/*@author Eternity-Myth@date 2017.9.12*/ /*导入net包、IO包*/import java.net.*;import java.io.*; /*创建客户端*/class TCPClient{    public static void main(String[] args)throws Exception    {        //创建客户端的Socket服务,指定目的主机和端口        Socket s=new Socket("192.168.x.xxx",xxxx);//此处输入ip地址和端口         //定义读取键盘数据的流对象        BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));         //定义目的,将数据写入到socket输出流,发送给服务端        //BufferedWriter bufOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));        PrintWriter out=new PrintWriter(s.getOutputStream(),true);         //定义一个socket读取流,读取服务端返回的信息        BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));        String line=null;        while((line=bufr.readLine())!=null)        {            if("over".equals(line))                break;//检测 客户端输入over后退出            out.println(line);            String str=bufIn.readLine();  //将服务器返回的信息用字符串str存储起来            System.out.println("Server:"+str);  //打印服务器返回的信息        }        //关闭资源        bufr.close();        s.close();    }}



/*@author Eternity-Myth@date 2017.9.12*/ /*导入net包、IO包*/import java.net.*;import java.io.*; /*创建服务器端*/class TCPServer{                /*构造trans函数                作用:将客户端传来的信息(字符)变成int类型并返回                */                private static int trans(String str)                {                        try        {            int num = Integer.parseInt(str);            return num;        }        catch(NumberFormatException e)        {            e.printStackTrace();        }        return 0;                }    public static void main(String[] args) throws Exception    {        //建立服务端socket服务,并监听一个端口        ServerSocket ss=new ServerSocket(6666);         //通过accept方法获取连接过来的客户端对象        Socket s=ss.accept();        String ip=s.getInetAddress().getHostAddress();        System.out.println(ip+"......connected");         //读取socket读取流中的数据        BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));        PrintWriter out=new PrintWriter(s.getOutputStream(),true);        String line=null;        int count=1;//数组下标标识        int num[]=new int[65536];        while((line=bufIn.readLine())!=null)        {                System.out.println(line);//在服务端打印客户端传来的信息                num[count]=trans(line);//转换成int类型后,存储在int数组内                count++;//下标增加,移动到下一位                if(count%2==0)//判断是否是第一个数,如果是,在客户端打印                {                        out.println("got the first num: "+num[count-1]);                        continue;                }                else//如果是第二个数,在客户端打印,并且打印两个数求和后的结果                {                        System.out.println("the sum is: "+(num[count-2]+num[count-1]));                        out.println("got the second num: "+num[count-1]+"      the sum is: "+(num[count-2]+num[count-1]));                }        }        //关闭资源        s.close();        ss.close();    }}


有点小bug是输入了字符串(非数字) 服务端会报错
倾听指教

阅读全文
1 0