public class SocketReceiveFile extends Thread {
DatagramSocket ds = null;
DatagramPacket dp = null;
File file = null; @Override
public void run() {
try {
ds = new DatagramSocket(7999);
while (true) {
byte[] buf = new byte[1024*8];
dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String str = new String(buf);
System.out.println(str);
ByteArrayInputStream byteArray = new ByteArrayInputStream(str.trim().getBytes()); System.out.println("接收完成");
mayparseXML(byteArray);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public byte[] readFile(String filePath) throws IOException {
File file = new File(filePath);
if (!file.exists()) {
return null;
}
FileInputStream fileOS = new FileInputStream(file);
BufferedInputStream buffin = new BufferedInputStream(fileOS);
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = buffin.read()) != -1) {
bytestream.write(ch);
}
byte ret[] = bytestream.toByteArray();
bytestream.close();
System.out.println("client读取的数据长度"+ret.length);
return ret;
}
private void mayparseXML(ByteArrayInputStream bis) throws IOException, SAXException {
PPVSPMessageDetailsConfiguration libraryDetails = GPSRuleSet
.getLibraryDetailsConfig(bis);
HashMap map = libraryDetails.getMovieDetailsMap();
Collection movieDetailsColl = map.values();
if (movieDetailsColl != null) {
Iterator itMovieDetails = movieDetailsColl.iterator();
while (itMovieDetails.hasNext()) {
ParamsDetailsConfiguration movieDetails = (ParamsDetailsConfiguration)
itMovieDetails.next();
System.out.println(movieDetails.getDeviceID() + " -> "
+ movieDetails.getTime() + " -> "
+ movieDetails.getDirection() + " -> "
+ movieDetails.getDivisionEW() + " -> "
+ movieDetails.getDivisionNS() + " -> "
+ movieDetails.getLongitude());
}
}
问题:在客户端我隔10秒会发送一个xml文件过来,但服务器这边我怕10秒钟处理不完我发过来的xml文件。所以我想使用多线程加队列将接收过来的xml文件存储在队列中。 在代码中str变量已得到我读取出来的样式。我想在mayparseXML()之前放入队列中。每次mayparseXML时去从队列中取 。代码随意改。本屌第一次使用这个。不太熟悉队列,求帮忙...
DatagramSocket ds = null;
DatagramPacket dp = null;
File file = null; @Override
public void run() {
try {
ds = new DatagramSocket(7999);
while (true) {
byte[] buf = new byte[1024*8];
dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String str = new String(buf);
System.out.println(str);
ByteArrayInputStream byteArray = new ByteArrayInputStream(str.trim().getBytes()); System.out.println("接收完成");
mayparseXML(byteArray);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public byte[] readFile(String filePath) throws IOException {
File file = new File(filePath);
if (!file.exists()) {
return null;
}
FileInputStream fileOS = new FileInputStream(file);
BufferedInputStream buffin = new BufferedInputStream(fileOS);
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
int ch;
while ((ch = buffin.read()) != -1) {
bytestream.write(ch);
}
byte ret[] = bytestream.toByteArray();
bytestream.close();
System.out.println("client读取的数据长度"+ret.length);
return ret;
}
private void mayparseXML(ByteArrayInputStream bis) throws IOException, SAXException {
PPVSPMessageDetailsConfiguration libraryDetails = GPSRuleSet
.getLibraryDetailsConfig(bis);
HashMap map = libraryDetails.getMovieDetailsMap();
Collection movieDetailsColl = map.values();
if (movieDetailsColl != null) {
Iterator itMovieDetails = movieDetailsColl.iterator();
while (itMovieDetails.hasNext()) {
ParamsDetailsConfiguration movieDetails = (ParamsDetailsConfiguration)
itMovieDetails.next();
System.out.println(movieDetails.getDeviceID() + " -> "
+ movieDetails.getTime() + " -> "
+ movieDetails.getDirection() + " -> "
+ movieDetails.getDivisionEW() + " -> "
+ movieDetails.getDivisionNS() + " -> "
+ movieDetails.getLongitude());
}
}
问题:在客户端我隔10秒会发送一个xml文件过来,但服务器这边我怕10秒钟处理不完我发过来的xml文件。所以我想使用多线程加队列将接收过来的xml文件存储在队列中。 在代码中str变量已得到我读取出来的样式。我想在mayparseXML()之前放入队列中。每次mayparseXML时去从队列中取 。代码随意改。本屌第一次使用这个。不太熟悉队列,求帮忙...
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货