博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【代码积累】UDP client
阅读量:4099 次
发布时间:2019-05-25

本文共 2247 字,大约阅读时间需要 7 分钟。

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class UDPClient {	private static final int TIMEROUT = 5000;	private static final int MAXNUM = 5;	private static final int SrcPort = 9000;	private static final int DstPort = 3000;			public static void main(String[] args) {		// TODO Auto-generated method stub		String str_send = "I am client!";		byte[] buf = new byte[1024];		InetAddress localAddr = null;		InetAddress remoteAddr = null;		DatagramSocket dp_socket = null;				//Get local IP,��Ϊ�����أ�����Dst IPҲ�DZ���IP		try {			localAddr = InetAddress.getLocalHost();			remoteAddr = localAddr;		} catch (UnknownHostException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				//Create Send/Receive DatagramPacket		DatagramPacket dp_send = new DatagramPacket(str_send.getBytes(),str_send.length(),remoteAddr,DstPort);		DatagramPacket dp_recv = new DatagramPacket(buf,1024);				//Create the send socket		try {			dp_socket = new DatagramSocket(SrcPort);			dp_socket.setSoTimeout(TIMEROUT);		} catch (SocketException e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				int tries = 0;		boolean receivedResp = false;  //�Ƿ���յ�����		while( ( false == receivedResp ) && ( tries < MAXNUM ) )		{			//�ط����ݱ�			try {				dp_socket.send(dp_send);				System.out.println("Sending msg:\r\n"+new String(dp_send.getData()));			} catch (IOException e) {				// TODO Auto-generated catch block				e.printStackTrace();			}			//����֮��������			try {				dp_socket.receive(dp_recv);								//�ж��Ƿ����Ա��ص�server����Ӧ				if ( !dp_recv.getAddress().equals(localAddr) )				{					throw new IOException("Unknow source address="+dp_recv.getAddress().getHostAddress());				}				else				{					receivedResp = true;				}			} catch (IOException e) {				// TODO Auto-generated catch block				tries++;				System.out.println("More tries...current try="+tries);				e.printStackTrace();			}		}				if ( true == receivedResp )		{			String recvMsg = new String(dp_recv.getData());			System.out.println("Recv:\r\n"+recvMsg);		}		else		{			System.out.println("No response ,gave up!");		}		dp_socket.close();	}}

转载地址:http://lthii.baihongyu.com/

你可能感兴趣的文章
Linux系统编程——线程池
查看>>
基于Visual C++2013拆解世界五百强面试题--题5-自己实现strstr
查看>>
Linux 线程信号量同步
查看>>
C++静态成员函数访问非静态成员的几种方法
查看>>
类中的静态成员函数访问非静态成员变量
查看>>
C++学习之普通函数指针与成员函数指针
查看>>
C++的静态成员函数指针
查看>>
Linux系统编程——线程池
查看>>
yfan.qiu linux硬链接与软链接
查看>>
Linux C++线程池实例
查看>>
shared_ptr简介以及常见问题
查看>>
c++11 你需要知道这些就够了
查看>>
c++11 你需要知道这些就够了
查看>>
shared_ptr的一些尴尬
查看>>
C++总结8——shared_ptr和weak_ptr智能指针
查看>>
c++写时拷贝1
查看>>
C++ 写时拷贝 2
查看>>
Linux网络编程---I/O复用模型之poll
查看>>
Java NIO详解
查看>>
单列模式-编写类ConfigManager读取属性文件
查看>>