Java使用UDP聊天程序
主要想测试Java UDP通信。Java UDP使用DatagramSocket和DatagramPacket完成UDP通信
主要思路:
1.本机通信,ip地址为:127.0.0.1
2.开一个线程监听一个端口
3.向端口发送消息
4.运行程序java ChatWindow desport listenport


ChatWindow.java
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.Scanner; /**
* 聊天小程序
* 使用UDP进行通信
* 开一个线程,监听一个端口,接收消息
* 这里主要用于本机通信,IP为127.0.0.1
*
* 发送消息正常,接收消息没反应
* @author GXF
*
*/
public class ChatWindow {
private int listenPort; //监听端口
private int desPort; //目标端口 /**
* 初始化目的端口和监听端口
* @param desPort
* @param listenPort
*/
public ChatWindow(int desPort, int listenPort){
this.desPort = desPort;
this.listenPort = listenPort; //启动监听线程
Thread listenMessageThread = new Thread(new ReceiveMessage());
listenMessageThread.start(); System.out.println("程序已启动,愉快的开始聊天吧!");
//接收用户输入的消息
Scanner scanner = new Scanner(System.in);
while(true){
String message = scanner.nextLine();
sendMessag(message);
}
} /**
* 向目的端口发送一个消息
* @param message
*/
public void sendMessag(String message){
//初始化一个socket
//设置好数据包
//发送消息
try {
DatagramSocket socketToSendMessage = new DatagramSocket();
byte buff[] = message.getBytes();
DatagramPacket packetToSend = new DatagramPacket(buff, buff.length, InetAddress.getByName("127.0.0.1"), desPort);
socketToSendMessage.send(packetToSend); //发送消息
socketToSendMessage.close(); //关闭socket
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 监听端口线程
* 实例化一个DatagramSocket,并绑定一个端口进行监听
* @author GXF
*
*/
class ReceiveMessage implements Runnable{
private DatagramSocket listenSocket;
private DatagramPacket receivePacket;
private byte buff[] = new byte[1024];
@Override
public void run() {
//init
init();
//start 监听
while(true){
try {
listenSocket.receive(receivePacket); //接收数据包
String receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
System.out.println(receiveMessage); //输出接收到的消息
} catch (IOException e) {
e.printStackTrace();
}
} } /**
* 对socket,端口,进行初始化
*/
public void init(){
try {
InetSocketAddress serverSocketAddress = new InetSocketAddress(listenPort);
listenSocket = new DatagramSocket(serverSocketAddress);
receivePacket = new DatagramPacket(buff, buff.length);
} catch (Exception e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
if(args.length != 2)
{
System.out.println("usage: java ChatWindow desport listenport");
return;
}
int desport = Integer.valueOf(args[0]);
int listenPort = Integer.valueOf(args[1]);
//first is desport, seconde is listenport
ChatWindow chatWindow = new ChatWindow(desport, listenPort); } }
Java使用UDP聊天程序的更多相关文章
- Java使用TCP聊天程序
前面使用了UDP进行通信的聊天程序 现在做一个用TCP进行通信的聊天程序 原理: ServerSocket Socket 1.开一个线程监听端口,准备接收消息 2.不断接受消息发送到目的端口 P.S. ...
- java Socket多线程聊天程序
参考JAVA 通过 Socket 实现 TCP 编程 参考java Socket多线程聊天程序(适合初学者) 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包 ...
- Java网络编程——UDP聊天程序
UDP简介 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报.在OSI模型中,UDP位于第四层--传输层,处于IP协议额上一层.UDP有不提供数据报分组.组装以及不能对数据报排序 ...
- Delphi-网络编程-第一个网络方面作品(UDP聊天程序)
其实这不算是一个聊天程序,因为还不能实现双方互发信息,只有一方能发信息,呵呵 我以后再改进吧.... 服务端代码: unit Unit1; interface uses Windows, ...
- java Socket Udp聊天
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav ...
- Java TCP Swing聊天程序
http://www.oschina.net/code/snippet_935786_52805 业余写着玩的,好多功能没实现,有兴趣的可以拿去玩玩.图片大了还上不了,额.下载地址 http: ...
- java实现UDP聊天---转载
import java.io.*; import java.net.*; class Send implements Runnable { private DatagramSocket ds; pub ...
- 网络编程应用:基于UDP协议【实现聊天程序】--练习
要求: 使用UDP协议实现一个聊天程序 代码: 发送端: package UDP聊天程序; import java.io.IOException; import java.net.DatagramPa ...
- Java TCP/UDP网络通信编程
本文转自:http://www.cnblogs.com/cdtarena/archive/2013/04/10/3012282.html 网络应用中基本上都是TCP(Transmission Cont ...
随机推荐
- spring 学习(三):aop 学习
spring 学习(三):aop 学习 aop 概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代 ...
- Laravel-安装composer
一.系统环境 Laravel框架有些系统上的要求,因此需要保证自己运行环境.要求的环境有:对于PHP的版本要求比较法高,其他的是扩展,可以在php.ini文件中开启 PHP >= 5.5.9 ...
- Django template的html明明改了,前端页面居然没有对应变化?!---Django的小坑
写django的时候,我有个模板的名字叫detail.html,被detail视图函数渲染 因为那个detail写乱了,但是里面有东西要参考,我没删掉它,改名为detail_old.html,又在目录 ...
- Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05
注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. 最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...
- 【离散数学】 SDUT OJ 谁是作案嫌疑人?
谁是作案嫌疑人? Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 刑侦大队对涉及六个嫌 ...
- PHP中使用CURL之php curl详细解析和常见大坑
这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 ,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 七夕啦,作为开发,妹子没得撩就“撩”下服务器吧,妹子有得撩的同学 ...
- Qt 学习之路 2(43):QStringListModel
Qt 学习之路 2(43):QStringListModel 豆子 2013年2月13日 Qt 学习之路 2 38条评论 上一章我们已经了解到有关 list.table 和 tree 三个最常用的视图 ...
- 在 Domoticz 中添加插座开关
前言 继上一篇的折腾,将 WiFi 插座刷为 ESPEasy,这次介绍一下在 Domoticz 中启用该插座的方法 步骤 在 Domoticz 控制台,设置 → 硬件中添加 Dummy,名称为&quo ...
- requests库安装
1.运行cmd输入pip install requests C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts ...
- WordPress 有关Https的设置
开头卖萌求点击 https://www.yinghualuowu.com/ Http和Https的区别 就是多了s的区别(不是),简单点就是比http更安全了.23333.这里不打算说的太详细,知道前 ...