服务器端往客户端发数据没反应
package com.angogps.socket;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.ParseException;
import java.util.Map;public class MeiTrackSocketServer extends Thread {
private Socket client; public MeiTrackSocketServer(Socket c) {
this.client = c;
} public void run() {
try {
HttpRequester requester=new HttpRequester();
BufferedReader in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
OutputStreamWriter out = new OutputStreamWriter (client.getOutputStream());
String str = in.readLine();
while((str=in.readLine())!=null){
SocketResolve sResolve=new SocketResolve();
System.out.println(str);
String address=client.getInetAddress().getHostAddress().toString();
System.out.println(address);
System.out.println(client.getPort());
Map<String, String> map =sResolve.toMap(str);
map.put("cip", address);
map.put("pr",((Integer)client.getPort()).toString());
}
out.write("@@S28,012896000469921,A11,10*FD\r\n");
out.flush();
client.close();
} catch (IOException ex) {
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally { }
} public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(5678);
while (true) {
MeiTrackSocketServer mts = new MeiTrackSocketServer(server.accept());
mts.start();
}
}
}
package com.angogps.socket;import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.ParseException;
import java.util.Map;public class MeiTrackSocketServer extends Thread {
private Socket client; public MeiTrackSocketServer(Socket c) {
this.client = c;
} public void run() {
try {
HttpRequester requester=new HttpRequester();
BufferedReader in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
OutputStreamWriter out = new OutputStreamWriter (client.getOutputStream());
String str = in.readLine();
while((str=in.readLine())!=null){
SocketResolve sResolve=new SocketResolve();
System.out.println(str);
String address=client.getInetAddress().getHostAddress().toString();
System.out.println(address);
System.out.println(client.getPort());
Map<String, String> map =sResolve.toMap(str);
map.put("cip", address);
map.put("pr",((Integer)client.getPort()).toString());
}
out.write("@@S28,012896000469921,A11,10*FD\r\n");
out.flush();
client.close();
} catch (IOException ex) {
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally { }
} public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(5678);
while (true) {
MeiTrackSocketServer mts = new MeiTrackSocketServer(server.accept());
mts.start();
}
}
}
解决方案 »
- java 中 new Date() 问题
- java日期格式转换,在线求助
- hibernate 无法自动创建表hibernate用的ant+xdoclet自动生成配置文件,生成了,可是起数据库无法自动建表。
- 高人请进,大家都来谈谈Struts2的文件下载,用迅雷下载失败的问题
- 提示java.lang.StringIndexOutOfBoundsException
- hibernate 级联删除问题
- 应用程序直接调用EJB,如何确保该应用程序是经过了登陆验证的?
- 为什么tomcat5.0运行一段时间后服务自动停止
- 软件设计师考试等在中国的权威性讨论!
- 谁有《JAVA2宝典》的电子版啊!!!!!
- eclipse插件开发如何定制自己的菜单
- 项目要用到工作流,选择jbpm4.x还是activitie5
String address=client.getInetAddress().getHostAddress().toString();System.out.println(address);System.out.println(client.getPort());
又写了一个方法 往这个IP上发信息 但是一直报连接超时
package com.angogps.socket;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;public class MeiTrackSocketClient {
static Socket server; public static void main(String[] args) throws Exception {
//String ip=InetAddress.getLocalHost().toString();
server = new Socket("117.136.0.68", 17461);
BufferedReader in = new BufferedReader(new InputStreamReader(
server.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in)); String str = "@@S28,012896000469921,A11,10*FD\r\n";
out.println(str);
out.flush();
System.out.println(in.readLine());
// while (true) {
// String str = wt.readLine();
// out.println(str);
// out.flush();
// if (str.equals("end")) {
// break;
// }
// System.out.println(in.readLine());
// }
server.close();
}
}
socket通信首先需要一个ServerSocket开启一个监听端口,然后通过socket的accept()方法等待客户端连接。
当有客户端连接(通过服务器的IP和监听端口号)时,accept方法会返回一个Socket对象,这样客户端和服务器端就建立好连接了(如果想建立多个连接可以将accept方法放到循环里,将返回的Socket对象保存下来),然后通过该Socket建立输入输出流通道,通过输入输出发送和接收消息。服务器端通过获取的Socket对象可以获得客户端的IP,主机名、输入输出流、等等信息,通过连接对象建立的IO流直接可以发送和接收消息了。