--转自:http://blog.csdn.net/nyzhl/article/details/1705039

直接把代码写在这里,解释看这里吧:http://blog.csdn.net/nyzhl/article/details/1705039

Java UDP网络编程主要通过 DatagramSocket和DatagramPacket 两个类实现的,下面是一个示例程序,
Server监听UDP 2000端口并把收到的Long类型数值打印出来
Client则通过输入获得Long类型的数值,并把它发给Server

Server:

package com.sas ;
import java.net.*;
import java.io.*; public class DatagramServer {
public static void main (String[] args) {
DatagramSocket ds = null;
try {
ds = new DatagramSocket(2000);
}
catch (SocketException e) {
e.printStackTrace();
System.exit(-1);
}
byte[] buffer = new byte[1024];
DatagramPacket dp = new DatagramPacket(buffer,buffer.length);
while (true) {
DataInputStream in = new DataInputStream (
new ByteArrayInputStream (buffer)
);
try {
ds.receive(dp);
System.out.println(in.readLong());
in.close();
}
catch (IOException e) {
e.printStackTrace();
continue;
}
}
//ds.close(); JDK提示"无法访问的语句"
//因为前面是死循环,无论如何也执行不到后面的语句
}
}

Client:

package com.sas;
import java.net.*;
import java.io.*; public class DatagramClient {
public static void main (String[] args) {
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
}
catch (SocketException e) {
e.printStackTrace();
System.exit(-1);
}
System.out.println("输入一个数字:");
BufferedReader typeReader = new BufferedReader (
new InputStreamReader(System.in)
);
long data = 0;
while(true) {
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream (bytesOut);
try {
data = Long.parseLong(typeReader.readLine());
dataOut.writeLong(data);
dataOut.flush();
byte[] buffer = bytesOut.toByteArray();
DatagramPacket dp = new DatagramPacket(
buffer,
buffer.length,
new InetSocketAddress("127.0.0.1",2000)
);
ds.send(dp);
dataOut.close();
bytesOut.close();
}
catch (SocketException e) {
System.err.println("Socket Error!");
continue;
}
catch (IOException e) {
System.err.println("IO Error!");
continue;
}
catch (Exception e) {
e.printStackTrace();
continue;
}
}
//ds.close(); JDK提示"无法访问的语句"
//因为前面是死循环,无论如何也执行不到后面的语句
}
}

TCP实现:

client:

package com.sas;

import java.io.OutputStreamWriter;
import java.net.Socket; public class TCPClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("127.0.0.1",2000);
OutputStreamWriter w = new OutputStreamWriter(s.getOutputStream());
w.write("Hello服务器");
w.flush();
w.close();
s.close();
}
}

server:

package com.sas;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket; public class TCPServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(2000);
while(true) {
Socket s = ss.accept();
System.out.println("A client has heen connected.");
InputStreamReader r = new InputStreamReader(s.getInputStream());
int c = 0;
while((c=r.read())>-1) {
System.out.print((char)c);
}
System.out.println();
r.close();
s.close();
}
}
}

java 网络编程-tcp/udp的更多相关文章

  1. Java网络编程——TCP/UDP

    UDP:面向无连接 ☆ 将数据及源地址和目的地址封装成数据包中 ☆ 每个数据报的大小限制在64K ☆ 不可靠协议 ☆ 不需要建立连接,速度快 TCP:面向有连接 ☆ 建立连接,形成传输数据的通道 ☆ ...

  2. 32.网络编程TCP/UDP服务

    网络编程TCP: 服务器端口了解: port:0~65535 web服务:80 邮箱服务:556 0~1024:为服务默认的公认端口,一般我们不能用 套接字:socket socket作用 ip:po ...

  3. java网络编程(TCP详解)

    网络编程详解-TCP 一,TCP协议的特点              面向连接的协议(有发送端就一定要有接收端)    通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...

  4. iOS 网络编程 TCP/UDP HTTP

    一.HTTP协议的主要特点: 1. CS模式 2. 简单快速:只需要传送请求方法和路径.(常用方法有GET,HEAD,POST) 3. 灵活:任意对象都可以,类型由Content-Type加以标记 4 ...

  5. 28_网络编程-TCP/UDP

    一.传输层       1.定义       IP首部有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议.根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是 ...

  6. java网络编程TCP传输—流操作—拿到源后的写入动作

    在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充···· 1.利用byte数组作为一个缓冲区进行读写 客户端上传 //获取socket ...

  7. JAVA网络编程TCP通信

    Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...

  8. Java分享笔记:Java网络编程--TCP程序设计

    [1] TCP编程的主要步骤 客户端(client): 1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号. 2.通过Socke ...

  9. java 网络编程基础 UDP协议的Socket:DatagramSocket;广播Socket:MulticastSocket

    什么是UDP协议: UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket 但这两个 Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java 提供了 ...

随机推荐

  1. leetcode@ [327] Count of Range Sum (Binary Search)

    https://leetcode.com/problems/count-of-range-sum/ Given an integer array nums, return the number of ...

  2. [转]SQL中char、varchar、nvarchar的区别

    char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarcha ...

  3. DedeCMS Error:Tag disabled:"php"的解决办法

  4. Apache Spark Tachyon的简介

    Tachyon是一个分布式内存文件系统,可以理解为内存中的HDFS. 为了提供更高的性能,将数据存储剥离Java Heap. 用户可以基于Tachyon实现RDD或者文件的跨应用共享,并提供高容错机制 ...

  5. JSF 2 multiple select listbox example

    In JSF, <h:selectManyListbox /> tag is used to render a multiple select listbox – HTML select ...

  6. [iOS微博项目 - 2.0] - OAuth授权3步

    A.概念      OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用 ...

  7. POJ 3694 Network (tarjan + LCA)

    题目链接:http://poj.org/problem?id=3694 题意是给你一个无向图n个点,m条边,将m条边连接起来之后形成一个图,有Q个询问,问将u和v连接起来后图中还有多少个桥. 首先用t ...

  8. 解决安装SQL Server2008失败的问题

    安装SQL Server2008时遇到"2008安装错误  必须重新启动计算机才能安装 SQL Server". 解决办法:HKEY_LOCAL_MACHINE\SYSTEM\Cu ...

  9. ssl配置

    Apache SSL配置 作者: JeremyWei | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://weizhifeng.net/apache-ssl.h ...

  10. ADO.NET 快速入门(三):从存储过程获取输出参数

    一些存储过程通过参数返回值.当参数在SQL表达式或者存储过程中被定义为“输出”,参数值会返回给调用者.返回值存储在 OleDbCommand 或者 SqlCommand 对象的参数集合的参数里.   ...