----------------------android培训、java培训、期待与您交流! ----------------------
网络编程就是指控制Socket,Socket是为网络服务提供的一种机制
以下两种协议的理解:
UDP , 面向无连接。 不需要连接。 发包有限制 一次不能超过64k 不可靠的协议,但是速度快!与聊天、对讲机原理类似
TCP 面向连接。需要连接。不需要封包。要通过3次握手确认,可靠连接,但是效率低一点! 与下载、打电话类似类似
笔记:
TCP创建就形成通道,客户端的in指向服务端的out,服务端的out反正也指向客户端的in。
TCP服务器与客户端都等待时需要考虑是否添加了结束标记
UDP步奏为
1.建立端点
2.提供数据。
3.发生数据包
4.关闭资源
代码演示:
package com.zhoufeng.socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPDemo {
/**
* @param args
* 1.建立端点
* 2.提供数据。
* 3.发生数据包
* 4.关闭资源
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//1 创建UDP服务
DatagramSocket ds = new DatagramSocket(8888);
//2 封包!
byte[] buf = "你好!".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.255"),10000);
//3 发包
ds.send(dp);
//4 关闭资源
ds.close();
}
}
定义一个客户端接收
代码演示:
package com.zhoufeng.socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPReceDemo {
/**
* 定义一个客户端,接收UDP数据
* 1 定义UDP服务,监听一个端口
* 2 定义一个数据包,用来存取接收到的数据包
* 3通过Receive方法存入
* 4 取出数据打印
* 5 关闭资源
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//定义协议
DatagramSocket ds = new DatagramSocket(10000);
while(true)
{
//定义数据包存数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//通过服务Receive存入
ds.receive(dp);
InetAddress ip = dp.getAddress();
//拿数据
String date = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println("收到" + ip.getHostAddress() + "接收端口:" + port + "消息:" + date);
}
}
}
TCP演示代码:
这里是服务端
package com.zhoufeng.tcp;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 定义断点接收
* @author Administrator
* 1.建立服务
* 2.获取合客户端的对象
* 3.收到数据然后读取
*
*/
public class TcpSevar {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10001);
Socket s = ss.accept();//拿到客户端对象
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
}
}
这里是客户端:
package com.zhoufeng.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Tcpkehuduan {
/**
* TCP分客户端和服务端
* 客户端:Socket
* 服务端:SeverSocket
* 步奏:
* 1.创建服务,连接主机和端口
* 2.
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
//客户端
Socket kehu = new Socket("192.168.1.101",10001);
OutputStream out = kehu.getOutputStream();
out.write("asdasdasd".getBytes());
kehu.close();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima