设为首页 加入收藏

TOP

Android开发入门——Socket编程
2014-11-24 07:32:31 来源: 作者: 【 】 浏览:1
Tags:Android 开发 入门 Socket 编程

1、 Socket通信模型如下:





应用程序通过套接字可以进行通信,可以使用udp协议或者使用tcp协议,当客户端和服务器端的协议时相对应的,客户端使用tcp,那么服务器端使用tcp


2、 UDP协议:把数据打包成数据包,然后直接发送对应的ip地址,速度快,但是不保证成功率,并且数据大小有限


TCP协议:首先连接接收方,然后发送数据,保证成功率, 速度慢



3、 TCP通信方式如下:






UDP通信不使用InputStreamOutputStream


4、 UDP通信实现:


UDP使用DatagramSocket对象来实现


UDP的客户端代码实现如下:


public static void main(String[] args) {


try {


//首先创建一个DatagramSocket对象


DatagramSocket socket = new DatagramSocket(4567);


//创建一个InetAddree


InetAddress serverAddress = InetAddress.getByName("192.168.1.104");


String str = "hello"; //这是要传输的数据


byte data [] = str.getBytes(); //把传输内容分解成字节


//创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个、


地址,以及端口号


DatagramPacket packet = new


DatagramPacket(data,data.length,serverAddress,4567);


//调用socket对象的send方法,发送数据


socket.send(packet);


} catch (Exception e) {


// TODO Auto-generated catch block


e.printStackTrace();


}


}


UDP的服务端代码实现如下:


//创建一个DatagramSocket对象,并指定监听的端口号


DatagramSocket socket = new DatagramSocket(4567);


byte data [] = new byte[1024];


//创建一个空的DatagramPacket对象


DatagramPacket packet =


new DatagramPacket(data,data.length);


//使用receive方法接收客户端所发送的数据,


//如果客户端没有发送数据,该进程就停滞在这里


socket.receive(packet);


String result = new


String(packet.getData(),packet.getOffset(),


packet.getLength());


System.out.println("result--->" + result);



5、 TCP通信的实现:


TCP使用Socket对象


TCP协议客户端实现:


//创建一个Socket对象,指定服务器端的IP地址和端口号


Socket socket = new Socket("192.168.1.104",4567);


//使用InputStream读取硬盘上的文件


InputStream inputStream = new


FileInputStream("f://file/words.txt");


//Socket当中得到OutputStream


OutputStream outputStream = socket.getOutputStream();


byte buffer [] = new byte[4*1024];


int temp = 0 ;


//InputStream当中的数据取出,并写入到OutputStream当中


while((temp = inputStream.read(buffer)) != -1){


outputStream.write(buffer, 0, temp);


}


outputStream.flush();


}



TCP协议服务器端现实:


//声明一个ServerSocket对象


ServerSocket serverSocket = null;


try {


//创建一个ServerSocket对象,并让这个Socket4567端口监听


serverSocket = new ServerSocket(4567);


//调用ServerSocketaccept()方法,接受客户端所发送的请求,


//如果客户端没有发送数据,那么该线程就停滞不继续


Socket socket = serverSocket.accept();


//Socket当中得到InputStream对象


InputStream inputStream = socket.getInputStream();


byte buffer [] = new byte[1024*4];


int temp = 0;


//InputStream当中读取客户端所发送的数据


while((temp = inputStream.read(buffer)) != -1){


System.out.println(new String(buffer,0,temp));


}


} catch (IOException e) {


// TODO Auto-generated catch block


e.printStackTrace();


}


serverSocket.close();



}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发入门——WIFI网络操作 下一篇Linux下Fork与Exec使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)
·Java并发编程中的线 (2025-12-25 20:25:38)
·C 语言 - cppreferen (2025-12-25 19:50:27)
·《C 语言入门教程》 (2025-12-25 19:50:23)