黑马程序员技术交流社区
标题:
网络编程的问题
[打印本页]
作者:
陈洋
时间:
2013-9-24 00:18
标题:
网络编程的问题
本帖最后由 陈洋 于 2013-9-24 10:09 编辑
package cn.itcast.UDP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
class S implements Runnable{
@Override
public void run() {
try {
DatagramSocket ds = new DatagramSocket(88);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=null;
while((str=br.readLine())!=null){
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(
buf,buf.length,InetAddress.getByName("192.168.1.101"),10005);
ds.send(dp);
}
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class R implements Runnable{
@Override
public void run() {
try{
DatagramSocket ds = new DatagramSocket(10005);
while(true){
byte[] by = new byte[10];
DatagramPacket dp = new DatagramPacket(by, by.length);
ds.receive(dp);
System.out.println(new String(dp.getData(),0,by.length));
}
ds.close();//这里怎么关闭不了,报错。
}catch(Exception e){}
}
}
public class UDP2{
public static void main(String[] args) {
new Thread(new S()).start();
new Thread(new R()).start();
}
}
复制代码
问题在注释处
作者:
李锡碧
时间:
2013-9-24 00:32
while(true){}......后面的执行不到了,,,
作者:
陈洋
时间:
2013-9-24 00:38
李锡碧 发表于 2013-9-24 00:32
while(true){}......后面的执行不到了,,,
不是这个问题,去掉循环也报错。
作者:
陈国柱
时间:
2013-9-24 10:19
有while循环,那里根本关闭不了,所以后面的close()语句是到达不了的,改动了一下
package cn.itcast.UDP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
class S implements Runnable{
private DatagramSocket ds;
public S(DatagramSocket ds){//弄一个构造方法,传入DataGramSocket
this.ds = ds;
}
@Override
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str=null;
while((str=br.readLine())!=null){
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(
buf,buf.length,InetAddress.getByName("localhost"),10005);
ds.send(dp);
}
ds.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class R implements Runnable{
private DatagramSocket ds;
public R( DatagramSocket ds){//弄一个构造方法,传入DataGramSocket
this.ds = ds;
}
@Override
public void run() {
try{
while(true){
byte[] by = new byte[10];
DatagramPacket dp = new DatagramPacket(by, by.length);
ds.receive(dp);
System.out.println(new String(dp.getData(),0,by.length));
}
// ds.close();//这里怎么关闭不了,报错。有while循环,这里就读不到:Unreachable code,
//去掉while之后,我觉等应该是关闭了,因为只有发送端在发数据,而没有接收端接收数据了
}catch(Exception e){}
}
}
public class UDP2{
public static void main(String[] args)throws Exception {
new Thread(new S(new DatagramSocket())).start();
new Thread(new R(new DatagramSocket(10005))).start();//接收端要知道端口
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2