傻逼单线程搞定安卓端 和 loop在iOS实现Socket TCP&UDP通讯(待续)

前言
哥最近被一家叫作上海** 网络科技有限公司的 坑了,这个家伙通过哥鉴定,是假程序员,每一年能赚钱,但总自称企业家,脸不红,真是能够的。因此在哥为了救他于水火中的那两个月中,完全花力气搞定了Socket通讯中那些坑。
那么下面咱们就来说讲,Socket中的那些坑和你们都懂的事情吧。前端

1、找到你的硬件 UDP
找到你的硬件是件不容易的事情,因此你最好一上来广播一下,而后设备要是收到特定的字符串,而后直接返回一下本身的IP地址就能够了(这招特别常见,因此你们不要顾虑是否是会有泄露别人协议或者得坐牢的风险。妈蛋地你不用这招,你能用哪招?!那么常见的招,还要算什么狗屁只知识产权,就真TMD无语了)。程序员

【Android】数组

//发起一个UDP
    public void connectServerWithUDPSocket(String IP,int PORT,String message,String type) {
        DatagramSocket socket_send;
        try {
            //建立DatagramSocket对象并指定一个端口号,注意,若是客户端须要接收服务器的返回数据,
            //还须要使用这个端口号来receive,因此必定要记住
            socket_send = new DatagramSocket(PORT);
            //使用InetAddress(Inet4Address).getByName把IP地址转换为网络地址
            InetAddress serverAddress = InetAddress.getByName(IP);
            //Inet4Address serverAddress = (Inet4Address) Inet4Address.getByName("192.168.1.32");
            String str = message;//设置要发送的报文
            byte data[] = str.getBytes();//把字符串str字符串转换为字节数组
            //建立一个DatagramPacket对象,用于发送数据。
            //参数一:要发送的数据  参数二:数据的长度  参数三:服务端的网络地址  参数四:服务器端端口号
            DatagramPacket packet = new DatagramPacket(data, data.length ,serverAddress ,48899);
            socket_send.send(packet);//把数据发送到服务端。
            flag=1;
            System.out.println("发送成功");
            socket_send.close();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

//接受UDP的广播返回
    public void ReceiveServerSocketData(int PORT,String type) {
            DatagramSocket socket_receive;
            try {

                System.out.println("开始接收");
                //实例化的端口号要和发送时的socket一致,不然收不到data
                socket_receive = new DatagramSocket(PORT);
                byte data[] = new byte[4 * 1024];
                //参数一:要接受的data 参数二:data的长度
                DatagramPacket packet = new DatagramPacket(data, data.length);
                int sr = 1;

                    while (sr == 1) {
                        socket_receive.receive(packet);
                        System.out.println("接受中……");
                        alertUdp = (TextView) findViewById(R.id.alertUDP);
                        alertUdp.setVisibility(View.GONE);
                        break;
                    }
                    //把接收到的data转换为String字符串
                    String result = new String(packet.getData(), packet.getOffset(), packet.getLength());
                    socket_receive.close();//不使用了记得要关闭
                    System.out.println("the number of reveived Socket is  :" + flag + " udpData:" + result);
                    if (type.equals("Start")) {
                        String[] result_arr = result.split(",");
                        SERVER_IP = result_arr[0];
                        System.out.println("新SERVER_IP:" + SERVER_IP);
                    } else if (type.equals("F0")) {
                    } 
//                A1
                    }else if (type.equals("G5")){
                        renew_v();
                        System.out.println(wifi_udp);
                        new AlertDialog.Builder(MyActivity.this)
                                .setTitle("收到G5的信息返回")
                                .setMessage("弹出一个警告框 告知你们内容")
                                .setPositiveButton("我知道了", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        System.exit(0);
                                    }
                                })
                                .show();

                    }else if (type.equals("G0")){
                        wifi_udp=0;
                    }
                    if (result.equals("...某指定内容...若是要计数时使用...")){
                        wifi_udp++;
                    }
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

【iOS】
(待续...)服务器

================
哥有点不想写了,至于后面的,哥为了不法律纠纷,在代码中把相关的一些变量给删除一下下,而后直接搞个百度云盘挂出来,欢迎你们学习和交流。网络

百度云盘连接:http://pan.baidu.com/s/1c0fBDQgsocket

哥电话是15201950688。ide

欢迎在上海的朋友交流一下下,另注:哥只提供代码上的指导,不提供关于协议部分的指教,那个是人家的写的,不是哥写的,哥本身过段时间也会本身拟一套,必定改三处以上不一样,保证改三百处不同,那TMD就是套新的,呵呵。学习

最后同那个坑人的人说一句 :哥比你有节操,哥的代码属于全人类,你用了哥不介意,可是你赚昧良心的钱,还义正词严,就不对了,哥在这里批评你这个70后一下,顺便替上海交通大学MBA那种提个醒,之后招生的时候,麻烦长个心眼,今年哥是第二次被大家家的学生坑到了。ui

相关文章
相关标签/搜索