注意:此代码完全是以入门水平为标准,内部有许多值得优化的地方,但作为了解TCP/UDP的功能还是可以的。
实际代码一定要进行优化,至少要启用线程。
UDP的实现部分 原文:
http://www.java2000.net/p10504接收代码- package chat;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPReceiveTest {
- void display() {
- byte buf[] = new byte[256];
- DatagramPacket sPacket;
- DatagramPacket rPacket;
- DatagramSocket socket;
- int count;
- byte[] res = "OK".getBytes();
- try {
- socket = new DatagramSocket(8888);
- while (true) {
- rPacket = new DatagramPacket(buf, buf.length);
-
- socket.receive(rPacket);
-
- InetAddress addr = rPacket.getAddress();
-
- int port = rPacket.getPort();
- count = rPacket.getLength();
- System.out.println("接收到来自 " + addr.getHostAddress() + " 数据:");
- System.out.println(new String(buf, 0, count));
-
- sPacket = new DatagramPacket(res, res.length, addr, port);
- socket.send(sPacket);
- }
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- public static void main(String[] args) {
- UDPReceiveTest app = new UDPReceiveTest();
- app.display();
- }
- }
发送代码- package chat;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- public class UDPSendTest {
- public static void main(String[] args) {
- UDPSendTest app = new UDPSendTest();
- app.display();
- }
- void display() {
- byte buf[] = new byte[256];
- DatagramPacket sPacket;
- DatagramPacket rPacket;
- DatagramSocket socket;
- int count;
- byte[] host = new byte[128];
- try {
- socket = new DatagramSocket();
-
- System.out.print("请输入目的方的主机名: ");
- count = System.in.read(host);
- InetAddress addr = InetAddress.getByName(new String(host, 0, count - 2));
- while (true) {
- System.out.print("请输入要发送的数据: ");
- count = System.in.read(buf);
-
- sPacket = new DatagramPacket(buf, count - 2, addr, 8888);
- socket.send(sPacket);
-
- rPacket = new DatagramPacket(buf, buf.length);
- socket.receive(rPacket);
- System.out.print("返回信息: ");
- String str = new String(rPacket.getData(), 0, rPacket.getLength());
- System.out.println(str);
- }
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
TCP的实现部分 原文:
http://www.java2000.net/p10506接收代码- package chat;
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class TCPReceiveTest {
- void display() {
- ServerSocket socket;
- try {
- socket = new ServerSocket(8888);
- while (true) {
- Socket s = socket.accept();
- InputStream is = s.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- PrintWriter out = new PrintWriter(s.getOutputStream());
- String line = reader.readLine();
- System.out.println("接收到来自 " + s.getRemoteSocketAddress() + " 数据:");
- System.out.println(line);
- out.print("OK");
- out.flush();
- out.close();
- reader.close();
- s.close();
- }
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- public static void main(String[] args) {
- TCPReceiveTest app = new TCPReceiveTest();
- app.display();
- }
- }
发送代码- package chat;
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.InetAddress;
- import java.net.Socket;
- public class TCPSendTest {
- public static void main(String[] args) {
- TCPSendTest app = new TCPSendTest();
- app.display();
- }
- void display() {
- Socket s;
- byte buf[] = new byte[256];
- int count;
- byte[] host = new byte[128];
- try {
-
- System.out.print("请输入目的方的主机名: ");
- count = System.in.read(host);
- InetAddress addr = InetAddress.getByName(new String(host, 0, count - 2));
- while (true) {
- System.out.print("请输入要发送的数据: ");
- count = System.in.read(buf);
-
- s = new Socket(addr.getHostAddress(), 8888);
- InputStream is = s.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(is));
- PrintWriter out = new PrintWriter(s.getOutputStream());
- out.println(new String(buf, 0, count - 2));
- out.flush();
- String line = reader.readLine();
- System.out.print("返回信息: ");
- System.out.println(line);
- reader.close();
- out.close();
- s.close();
- }
- } catch (Exception e) {
- System.out.println(e);
- }
- }
- }
分享到:
相关推荐
线用户信息,通知新用户的上线和用户的下线,实现群聊功能。 服务器负责管理用户的连接、发送消息与退出,有新用户建立连接时,记录新用 户信息,并向同组其他客户端广播;用户退出时,清除用户信息,并向同组其他...
Java UDP实现简单聊天功能主要涉及了网络编程中的用户数据报协议(User Datagram Protocol,简称UDP)。UDP是一种无连接、不可靠的传输协议,适合于实时数据传输或对速度要求较高的应用,因为它没有TCP的握手和确认...
在这个“UDP实现的聊天工具”项目中,开发者利用UDP的特性来构建了一个简单但功能齐全的聊天应用程序。 首先,让我们详细了解一下UDP的特点: 1. **无连接**:UDP在发送数据之前不需要建立连接,因此它的通信过程...
本资源“C#TCP-UDP.rar”包含的源代码示例,旨在帮助开发者理解和实现C#环境下的TCP与UDP通信。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过建立连接、...
在Android平台上实现局域网聊天应用,通常会利用...总之,实现Android局域网聊天应用涉及了网络编程、多线程、数据传输、错误处理等多个方面,通过使用UDP协议,可以在保持较低延迟的同时,实现快速、实时的聊天功能。
在iOS开发中,如果我们要创建一个UDP聊天应用,那么这个"iphone UDP 聊天例子"很可能是展示如何利用Objective-C或Swift编程语言来实现这一功能的代码示例。 首先,我们需要理解UDP的基础知识。与TCP(Transmission ...
Java UDP协议交互是一种基于无连接的传输层协议,用于实现控制台聊天应用。UDP(User Datagram Protocol)相较于TCP(Transmission Control Protocol)具有更快的传输速度,因为它不进行握手、确认和重传等复杂的...
3. **网络聊天应用**:此项目实现了一个网络聊天应用,意味着它涉及到TCP/IP协议,可能使用了UDP(User Datagram Protocol)或TCP(Transmission Control Protocol)来保证数据的可靠传输。TCP是面向连接的,保证...
### 基于UDP局域网的聊天软件 ...以上内容详细介绍了基于UDP局域网聊天软件的设计与实现过程,从开发环境的选择到关键技术的讲解,再到具体的设计与实现细节,旨在帮助读者全面了解此类软件的开发流程和技术要点。
一旦连接建立,双方就可以通过发送和接收数据来实现聊天功能。TCP的`accept()`函数用于接收新的连接,`send()`和`recv()`函数用于发送和接收数据。 2. **UDP通信**:与TCP不同,UDP是无连接的,不保证数据的顺序或...
本项目"Windows,VS2017,VS2008,MFC多人聊天窗口客户端"提供了一个实现单人聊天和群组聊天功能的实例,其核心技术基于Microsoft Foundation Class (MFC)库,利用TCP/IP和UDP协议进行数据传输。下面,我们将详细...
本项目"UDP.rar"是一个基于UDP的Delphi实现的网络聊天工具,它展示了如何在Delphi中使用UDP进行数据发送和接收。 Delphi UDP通信的基本原理: 1. 创建Socket:在Delphi中,可以使用TUDPClient或TUDPServer组件来...
UDP(User Datagram ...以上是关于Python实现UDP聊天窗口的核心技术点,通过这些知识,你可以理解并实现一个简单的UDP聊天程序。然而,实际的聊天应用通常还需要处理更多的细节,如错误处理、用户认证、消息确认等。
局域网P2P聊天是一种在本地网络内实现设备间直接通信的技术,它不依赖中央服务器..."LAN_chat"和"局域网P2P聊天"这些文件很可能包含了实现这一功能的相关代码或文档,对于理解P2P聊天技术的实现细节具有重要参考价值。
而这里提到的源代码,则是实现了局域网内的类似功能,意味着它可能不包含所有QQ的功能,但至少支持用户在相同网络环境下的文字聊天。 【描述】中的"sockets"是指网络编程中的套接字(Socket),它是计算机网络中...
在C#中,使用Socket类进行低级网络通信,可以实现TCP和UDP两种协议的连接。TCP套接字提供面向连接的、可靠的服务,而UDP套接字则提供无连接、不可靠的数据传输。 4. **多线程编程** - 在网络编程中,多线程技术常...
这个项目利用了C语言的高效性和UDP(User Datagram Protocol)的简单与快速特性,来实现基本的通信功能,包括注册、登录、私聊、群聊、在线用户列表展示、下线通知以及重复登录提示。以下是对这些知识点的详细解释:...
在C#中,System.Net.Sockets命名空间提供了Socket类,用于实现TCP/IP协议栈的各种服务,包括TCP和UDP协议。 在这个聊天室项目中,我们有两个主要组件:聊天室服务器和聊天室客户端。服务器端的角色至关重要,它不仅...
本项目"udp_service.zip"是一个基于UDP的Android服务器端代码示例,旨在帮助开发者理解和实现Android设备上的UDP通信。 1. **UDP协议基础**: UDP是一种不可靠的、无连接的协议,它不像TCP那样需要建立连接、维护...