关闭

聊天程序的一些注意事项

标签: 学习总结
117人阅读 评论(0) 收藏 举报
分类:

Socket:套接字 插座 插槽

说明socket既能发送又能接收


分为两点:

1 调试的时候可以使用start命令再开一个控制台窗口 保留了原来的设置 很方便

2 思路要清晰 发送方(设置位置信息 设置信息输入方式 打包 发送 关闭资源)

接收方(设置监听端口 设置接受信息的对象 显示接收到的信息)


/*
需求:
聊天s


*/

//有net的地方一般都有io
import java.io.*;
import java.net.*;


class UDPSend2
{
public static void main(String[] args) throws UnknownHostException, IOException
{
DatagramSocket ds = new DatagramSocket();
//键盘输入 背也要背下来

//其实就是用缓冲区读取默认系统输入 而系统输入是键盘 需要转换一次
BufferedReader bufr = 
new BufferedReader(new InputStreamReader(System.in));


String line = null;


while ((line = bufr.readLine())!=null)
{//设定结束标记
if ("886".equals(line))
{
break;
}


byte[] buf = line.getBytes();

//设定发出方的位置(名称/ip 端口)
//DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
DatagramPacket dp = 
new DatagramPacket(buf, buf.length, InetAddress.getByName("S10-M"), 10086);

//发送
ds.send(dp);
}

//别忘了关闭资源
ds.close();
}


public static void sopln(Object obj)
{
System.out.println(obj);
}
}




class UDPReceive2
{
public static void main(String[] args) throws UnknownHostException, IOException
{

//接收方需要监听相对应的端口
DatagramSocket ds = new DatagramSocket(10086);


while (true)
{
byte[] buf = new byte[1024];
//byte[] buf, int offset, int length) 
//给发过来的包找个放的地方

DatagramPacket dp = 
new DatagramPacket(buf, 0 ,buf.length);


ds.receive(dp);

//把对方的地址信息和数据信息分别读取出来
String data = new String(dp.getData(),0, dp.getLength());
String address = dp.getAddress().getHostName();
int port = dp.getPort();


sopln(address+":"+data+port);
}


// ds.close(); 老师就不关闭了
}


public static void sopln(Object obj)
{
System.out.println(obj);
}
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2926次
    • 积分:279
    • 等级:
    • 排名:千里之外
    • 原创:25篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档