java基础—网络编程———建立聊天的形式

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

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();

	}

}
时间: 2024-10-11 16:26:11

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

IT十八掌Java基础 网络编程

网络编程 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. A:有人说,20世纪最伟大的发明不是计算机,而是计算机网络. 还有人说,如果你买了计算机而没有联网,就等于买了电话机而没有接电话线一样. 网络模型 计算机网络之间以何种规则进行通信,就是网络模型研究问题. 网络模型一般是指 O

黑马程序员——java基础---网络编程

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.网络通讯 概念:网络间数据的传输.交互. 三要素:IP地址.端口号.传输协议. ——>IP地址 1.网络中设备的标识 2.单纯的IP地址不易记忆,可用主机名替代. 3.如果本机上没有配置任何IP地址的情况下,本机默认的IP地址为127.0.0.1 本地回环地址:127.0.0.1  主机名:localhost 用处:检验本机网卡是否运行正常等. ——>端口号 概念:用于标识进程的数字称为

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

本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录,有时间我还要回来再看看,加深理解. 目录: 1.网络编程的基础知识 1.1 网络协议 1.2 tcp /ip 1.3 IP地址 1.4 Port(端口号) 2 UDP/Tcp 3 OSI参考模型 1 网络编程的基础知识 1.1  网络协议 规定了计算机之间连接的物理机械,电器等特性,及计算机间的相互

Java基础——网络编程

一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制.并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境. 基础: 网络编程的目的: 网络编程的目的就是指直接或间接地通过网络协议与其它计算机进行通讯. 主要存在的问题: 如何准确地定位网络上一台或多台主机

黑马程序员——JAVA基础-网络编程-TCP

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- TCP传输 两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流.该流中既有读取,也有写入. tcp的两个端点:一个是客户端,一个是服务端. 客户端:对应的对象,Socket 服务端:对应的对象,ServerSocket TCP客户端: ①:建立tcp的socket服务,最好明确具体的地址和端口.这个对象在创建时,就已经可以对指定ip和端口

梦入IBM之java基础-网络编程

如今我们来谈谈最后的内容:网络编程: 1):TCP中是线程与线程进行通讯!内部的执行机制是这种:先有一个线程去监听某个port.然后假设有Socket连接上来了以后,server会生成一个Socket对象与其                进行通讯! 2):通过URL对象能够获得某个某个站点的输入流.(可是这个输入流也是相对于程序的!返回的是一个InputStream的子类!) URL url = new URL("http://www.baidu.com"); HttpURLConn

java基础——网络编程基础TCP,URL

TCP部分 new socket对象 package ip; /* 1.通过IP地址和域名new InetAddress对象 2.本地回路地址:127.0.0.1 对应localhost,表示本地主机 3.IP地址和端口号接在一起组成一个socket,类似于网络节点 @author zsben @create 2020-01-07 15:34 */ import java.net.InetAddress; import java.net.UnknownHostException; public

Java基础-网络编程

package com.net; /** * 1.什么是网络?什么是计算机网络? * 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统, * 从而使众多的计算机可以方便地互相传递信息,共享硬件.软件.数据信息等资源 * 2.计算机网络的基本功能? * 资源共享 * 信息传输与集中处理 * 均衡负荷与分布处理 * 综合信息服务 * 3.计算机网络协议? * 计算机网络中实现通信必须有一些约定即通信协议,对速率.传输代码.代码结构.传 输控制步骤.出错控制等制

黑马程序员——Java基础——网络编程

第一讲 网络概述 1.网络通信三要素:电脑IP地址.软件本地端口号.网络间传输协议(国际通用的TIP/IP,还有很多其他的) 小知识:-ping 127.0.0.7可以测试网卡用 2.网络模型图列: 用户在运用层发出的数据,经过逐层打包后通过物理层传输到另一个模型中,然后逐层分解,找到端口,被另一个用户获得 IP地址:InetAddress• 网络中设备的标识• 不易记忆,可用主机名• 本地回环地址:127.0.0.1 主机名:localhost 使用java.net包中的InetAddress