小程序求助,为什么安卓客户端发送数据后pc端没反应

fuckonline 2012-08-30 10:54:52
android客户端代码如下
public class MainActivity extends Activity {
//声明EditText控件fenShu和Button
private EditText fenshu;
private Button dafen;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//根据控件id来取得控件fenShu
fenshu = (EditText)findViewById(R.id.fenshu);
dafen = (Button)findViewById(R.id.dafen);
dafen.setOnClickListener(new DafenListener());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class DafenListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String fs = fenshu.getText().toString();
fenshu.setText("");
try {
DatagramSocket socket = new DatagramSocket(8090);
InetAddress serverAddress = InetAddress.getByName("218.66.218.190");
byte data [] = fs.getBytes();
DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,8090);
socket.send(packet);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}





pc客户端的代码如下
//窗口模块
public class Xianshiping{
public static void main (String args[]) {
ImageFrame frame = new ImageFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//socket模块
try {
//创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket = new DatagramSocket(8090);
byte data [] = new byte[1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet = new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据
socket.receive(packet);
//取得packet包内的数据放入一个String对象fenshu中
String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());
ImageFrame IF=new ImageFrame(fenshu);
IF.paint(null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

class ImageFrame extends JFrame{
//显示文本
String str = null;
ImageFrame(String str)
{
super();
this.str=str;
}
public void paint(Graphics g) {
super.paint(g);
g.setFont(new Font( "SansSerif ",Font.PLAIN,500));
g.drawString(str, 30, 550);
}

//设置背景图片
public ImageFrame()
{
setTitle("ImageTest");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
ImagePanel panel = new ImagePanel();
add(panel);
}
public static final int DEFAULT_WIDTH=500;
public static final int DEFAULT_HEIGHT=500;

}
class ImagePanel extends JPanel{
public ImagePanel(){
try{
image = ImageIO.read(new File("img.jpg"));
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(image==null) return;
int imageWidth=image.getWidth(this);
int imageHeight=image.getHeight(this);
g.drawImage(image,0,0,null);
for(int i=0;i*imageWidth<=getWidth();i++)
for(int j=0;j*imageHeight<=getHeight();j++)
if(i+j>0)
g.copyArea(0,0,imageWidth,imageHeight,i*imageWidth,j*imageHeight);
}
private Image image;
}


为什么我在android客户端中输入数字 PC客户端却没有反应,为什么?
...全文
122 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ValentinsLee 2012-09-01
  • 打赏
  • 举报
回复
说个简单的问题,你的电脑现在基本是挂载不到网络上的.所以如果要做测试,建议在一个路由器内做实验.
独领风骚的猫 2012-08-31
  • 打赏
  • 举报
回复
楼主 自己的ip是218.66.218.190 ,但是你android端访问的pc端的时候ip这么获取一下 把: InetAddress serverAddress = InetAddress.getByName("218.66.218.190");
换成 InetAddress serverAddress = InetAddress.getLocalHost(); 试试吧
独领风骚的猫 2012-08-31
  • 打赏
  • 举报
回复
InetAddress serverAddress = InetAddress.getByName("218.66.218.190");
这个地址对吗?? 是不是 localhost的ip啊 !! 192.168.0.1 ???
独领风骚的猫 2012-08-31
  • 打赏
  • 举报
回复
还是不行啊??

DatagramPacket packet = new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据
socket.receive(packet);
在这 之后打印 log日志看看 packet的length 是多少 到底是没数据还是你没画出来
fuckonline 2012-08-31
  • 打赏
  • 举报
回复
还是接受不到数据 这是为什么呢?
[Quote=引用 7 楼 的回复:]
String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());


这里应该是这么写吧 :String fenshu = new String(packet.getData(),0,
packet.getLength());


哈哈
[/Quote]
fuckonline 2012-08-31
  • 打赏
  • 举报
回复
我试试看哇
[Quote=引用 7 楼 的回复:]
String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());


这里应该是这么写吧 :String fenshu = new String(packet.getData(),0,
packet.getLength());


哈哈
[/Quote]
fuckonline 2012-08-30
  • 打赏
  • 举报
回复



为什么会请求超时?地址设置错误吗?
fuckonline 2012-08-30
  • 打赏
  • 举报
回复


网络连接显示pc客户端有在监听端口
fuckonline 2012-08-30
  • 打赏
  • 举报
回复
//socket模块 
try {
//创建一个DatagramSocket对象,并指定监听的端口号
DatagramSocket socket = new DatagramSocket(8090);
byte data [] = new byte[1024];
//创建一个空的DatagramPacket对象
DatagramPacket packet = new DatagramPacket(data,data.length);
//使用receive方法接收客户端所发送的数据
socket.receive(packet);
//取得packet包内的数据放入一个String对象fenshu中
String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());
ImageFrame IF=new ImageFrame(fenshu);
IF.paint(null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

这段代码不是serversocket吗?我用的是UDP协议
[Quote=引用 3 楼 的回复:]
楼主!!你的serversocket呢
[/Quote]
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
楼主!!你的serversocket呢
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
没接收到数据吗??
fuckonline 2012-08-30
  • 打赏
  • 举报
回复
为什么没人啊
独领风骚的猫 2012-08-30
  • 打赏
  • 举报
回复
String fenshu = new String(packet.getData(),packet.getOffset(),packet.getLength());


这里应该是这么写吧 :String fenshu = new String(packet.getData(),0,
packet.getLength());


哈哈

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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