j2me中已经实现通过cmwap连接到socket服务器,但发送数据无法收到回应,零字节

volkia 2008-12-16 01:49:33
想要实现一个基于socket的手机聊天程序,聊天服务器已经用socket开发完成,但现在客户端是用手机,通过移动cmwap的网络,只能访问HTTP,现在已经实现以下功能(步骤),
1. 连接到10.0.0.172:80移动网关

SocketConnection socket = (SocketConnection)Connector.open("socket://10.0.0.172:80");

2. 发送远程聊天服务器连接信息:

String header = "CONNECT " + server + ":" + port + " HTTP/1.1\r\nUser-Agent: CMWAP Proxy\r\n";
OutputStream os = socket.openOutputStream();
os.write(header.getBytes());

并能收到类似 HTTP/1.1 200....等信息
InputStream is = socket.openInputSteam();
byte data[] = new byte[1024];
int rb = 0;
int len = 0;
while((rb = dis.read()) != -1) {
data[len++] = (byte)rb;
}
byte da[] = new byte[len];
for (int i = 0; i < len; i++) {
da[i] = data[i];
}
String s = new String(da);
//还有,这里的数据复制有点笨哈.

但是,接下来我要完成真正的与聊天服务器联系,却老是出错:

byte[] bytes = "hello".getBytes();
for (int i =0; i < bytes.length; i++) {
os.write(bytes[i]);
}
os.flush();
发送数据可以成功,但随后的接收数据却总是0长度.
byte data[] = new byte[1024];
int rb = 0;
int len = 0;
DataInputStream dis = new DataInputStream(is);
while((rb = dis.read()) != -1) {
data[len++] = (byte)rb;
}

len始终是0.

请问有人已经在cmwap下通过这种方式进行过socket连接实验吗?该如何实现?
...全文
140 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
biaozai06 2008-12-16
  • 打赏
  • 举报
回复
CMWAP只提供了WAP代理和HTTP代理,手机上网能访问的范围有限,接入时只能访问GPRS网络内的IP (10.*.*.*),所以LZ能连接到10.0.0.172:80,但是String header = "CONNECT " + server + ":" + port + " HTTP/1.1\r\nUser-Agent: CMWAP Proxy\r\n"; 不一定能成功,sever是否在WAP的(10.*.*.*)范围内?如果不是,当然会连接失败了

如果要访问(10.*.*.*)以外的IP,可以使用cmnet。
yanhan0615 2008-12-16
  • 打赏
  • 举报
回复
看另一个帖子,访问不了的!之所以172可访问,因为他是移动网关,除非你给移动钱,他把你服务器认证了可行,否则用CMwap就不可访问,可以用cmnet做
volkia 2008-12-16
  • 打赏
  • 举报
回复
谢谢回复,由于发贴时服务器响应太慢,发了两次,请转到
前一篇一起讨论好吗?
另, 移动的10.0.0.172:80端口是可以进行访问代理的,所以手机上的其它网络程序也才能运行啊。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧