在進行Android開發的過程中,免不了,要開發TCP/UDP通訊的程式,下面這兩段代碼,分別介紹了TCP/UCP通過的一個執行個體:
代碼一:
private void tcpdata() {
try {
Socket s = new Socket("192.168.0.25", 65500);
// outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
// 注意第二個參資料為true將會自動flush,否則需要需要手動操作out.flush()
PrintWriter output = new PrintWriter(out, true);
output.println("Hello IdeasAndroid! 偽IP為:"
+ SIMCardToIP("13512345006"));
InputStream inputStream = s.getInputStream();
DataInputStream input = new DataInputStream(inputStream);
byte[] b = new byte[10000];
int length = input.read(b);
inputReader = new InputStreamReader(inputStream);
String Msg = new String(b, 0, length, "gb2312");
Toast.makeText(TcpTest.this, Msg, 1000).show();
Log.d("Tcp Demo", "message From Server:" + Msg);
s.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
下面的代碼是UDP通訊的過程:public String send(String msg) {StringBuilder sb = new StringBuilder();InetAddress local = null;try {local = InetAddress.getByName("192.168.0.25"); // 本機測試} catch (UnknownHostException e) {e.printStackTrace();}try {dSocket = new DatagramSocket(); // 注意此處要先在設定檔裡設定許可權,否則會拋許可權不足的異常} catch (SocketException e) {e.printStackTrace();}int msg_len = msg == null ? 0 : msg.length();DatagramPacket dPacket = new DatagramPacket(msg.getBytes(), msg_len,local, SERVER_PORT);try {dSocket.send(dPacket);} catch (IOException e) {e.printStackTrace();}try {dSocket.receive(dPacket);sb.append(new String(dPacket.getData()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}dSocket.close();return sb.toString();}