吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3315|回复: 4
收起左侧

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

  [复制链接]
Eternity-Myth 发表于 2017-9-12 21:39
本帖最后由 Eternity-Myth 于 2017-9-12 21:42 编辑

来吾爱第一帖。
关注了几个月了,几乎每天都在看论坛
注册了偶尔回回帖,这是第一次发帖(实话说挺紧张的,这里大佬好多,我只是萌新大学生一个,见笑了)

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

正好在学习java中,于是选择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();
    }
}



[Java] 纯文本查看 复制代码
/*
@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吾爱币 +1 热心值 +1 收起 理由
lstar + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lstar 发表于 2017-9-12 22:28
学习一下
潮流、 发表于 2017-9-12 23:00
王辰瑞 发表于 2017-9-12 23:17
shaozhenghang 发表于 2017-9-12 23:46
需要判断一下line是不是都是数字
[Java] 纯文本查看 复制代码
public static boolean isNumeric(String str)
    {
	    Pattern pattern = Pattern.compile("[0-9]*");
	    Matcher isNum = pattern.matcher(str);
	    if( !isNum.matches() )
	    {
	    	return false;
	    }
	    return true;
    }

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Eternity-Myth + 1 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-8 11:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表