前言
哥最近被一家叫作上海**
网络科技有限公司的
坑了,这个家伙通过哥鉴定,是假程序员,每一年能赚钱,但总自称企业家,脸不红,真是能够的。因此在哥为了救他于水火中的那两个月中,完全花力气搞定了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