接收器和发射器的简单演示

import java.io.*;

import java.net.*;

public class SocketDemo {

	public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub System.out.println("发送端启动");
System.out.println(InetAddress.getLocalHost().getHostAddress());
DatagramSocket ds = new DatagramSocket(); String str = "发送端来了了了";
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.3.4"),10101);
ds.send(dp);
ds.close();
} }
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException; public class SocketDemo2 { public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
System.out.println("接收端启动");
DatagramSocket ds = new DatagramSocket(10101);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+" "+port);
System.out.println(text);
ds.close();
/*
* 因为UDP协议数据传输,仅仅管发送数据。而无论接收是否可以接收到数据,因此应该先启动接收端程序,再启动发送端程序*/
} }

双窗体聊天模式:

建立发送端:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException; public class SocketChatDemoInput
{ public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
System.out.println("发送端启动");
DatagramSocket ds = new DatagramSocket();
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!=null)
{
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.3.4"),10102);
ds.send(dp);
if("over".equals(line))
break;
}
ds.close(); } }

建立接收端

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException; public class SocketChatOutput { public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub System.out.println("接收端启动");
DatagramSocket ds = new DatagramSocket(10102);
while(true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip =dp.getAddress().getHostAddress();
int inpor = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength()); System.out.println(ip+" "+ inpor+" \n"+text);
} } }

单窗体聊天模式

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException; class Send implements Runnable
{
private DatagramSocket ds ;
public Send(DatagramSocket ds)
{
this.ds= ds;
}
public void run()
{
try
{
System.out.println("发送端启动");
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!=null)
{
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.3.4"),10103);
ds.send(dp);
if("over".equals(line))
{
System.out.println("聊天程序退出");
break;
}
}
ds.close();
}catch(Exception e)
{
System.out.println(e.toString());
}
}
}
class Rece implements Runnable
{
DatagramSocket ds;
Rece(DatagramSocket ds)
{
this.ds = ds;
}
public void run()
{ while(true)
{
System.out.println("接收端启动");
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
try
{
ds.receive(dp);
} catch (IOException e)
{ e.printStackTrace();
}
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+" "+ port+" \n"+text);
}
} } public class SocketGroupChat
{ public static void main(String[] args) throws Exception
{
// 单窗体聊天模式 DatagramSocket send = new DatagramSocket();
DatagramSocket rece = new DatagramSocket(10103); Send s = new Send(send);
Rece r = new Rece(rece); new Thread(s).start();
new Thread(r).start(); } }

java基础—网络编程———建立聊天的形式的更多相关文章

  1. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  2. Java基础——网络编程(二)

    一.套接字 Socket 网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送.它在应用程序中创建,通过一种绑定机制与驱动程序建立关系, ...

  3. 二十三、Java基础--------网络编程

    Java中另一个重要技术就是网络编程了,为了更好的学习web方向的知识,有必要对java之网络编程好好学习,本文将围绕网络编程技术进行分析. 常见的网络协议:UDP.TCP UDP 1. 将数据源和目 ...

  4. Java基础---网络编程

    第一讲     概述 1.网络模型:OSI参考模型和TCP/IP参考模型 图示: 一般来说开发处于传输层和网际层,应用层为:FTP和HTTP协议等,传输层为:UDP和TCP等,网际层为:IP. 通常用 ...

  5. Java基础——网络编程

    一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网 ...

  6. JAVA基础——网络编程之网络链接

    一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章最开始提到的定位的问题. IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证):网络编程是和远程计算 ...

  7. Java基础——网络编程(一)

    本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...

  8. java基础—网络编程

    一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.

  9. Java基础——网络编程(三)

    TCP 网络编程 -- tcp 分为客户端和服务端 -- 客户端对应的对象是 Socket -- 服务端对应的对象是 ServerSocket -- 如果客户端先启动,则出现 connection r ...

随机推荐

  1. node.js服务器核心http和文件读写

    使用htpp给客服端的数据,把数据交给浏览器渲染.利用 http创建服务器,如客户端请求为:127.0.0.1:3000或127.0.0.1:3000/xxx.html时 ,判断www文件夹中,文件  ...

  2. JS实现拖拽小案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. cocos2dx--vs2012+lua开发环境搭建

    cocos2dx版本号:cocos2dx2.2.3 lua插件:babelua 1.5.3  下载地址:http://pan.baidu.com/s/1i3mPD8h 第一步:先关闭vs,双击下载下来 ...

  4. Java判断1个字符串中出现了几次其他字符串

    public class Test { public static int count(String text,String sub){ , start =; ){ start += sub.leng ...

  5. 字符集和编码II: fat/msdos/vfat (文件名乱码的问题)

    具体到文件名乱码的问题,需要明确两点 第一,文件名作为一个字符串,需要被编码后存入文件系统: 第二,Linux内核无非是个特殊的应用程序,它读取文件名,再把文件名以编码后的形式传递出去. 但Linux ...

  6. linux中关闭程序或进程

  7. ASI使用

    一.ASI类库集成: .添加源代码文件 ASIAuthenticationDialog.h ASIAuthenticationDialog.m ASICacheDelegate.h ASIDataCo ...

  8. [RxJS] BehaviorSubject: representing a value over time

    When an Observer subscribe to a BehaviorSubject. It receivces the last emitted value and then all th ...

  9. GTK入门学习:glade的使用

    搭建好环境后,在终端敲 glade 就可以启动glade工具. glade的总体框图: 经常使用控件选择区:列举了经常使用的控件,经常使用的有三类:顶层(主窗体等).容器(各种布局容器等).控制和显示 ...

  10. JAVA 如何将String进行大小写转换

    private String convertString(String str, Boolean beginUp){ char[] ch = str.toCharArray(); StringBuff ...