java学习之tcp与udp的实现
package com.gh.socket; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException; /**
* tcp客户端程序
* @author ganhang
*/
public class ClientDemo {
public static void main(String[] args) {
try {
Socket sk=new Socket("",8888);
System.out.println("与服务器连接成功");
BufferedReader br=new BufferedReader(new InputStreamReader(sk.getInputStream()));
String info=br.readLine();
br.close();
System.out.println(info);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.gh.socket; import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket; /**
* tcp服务器端
* @author ganhang
*
*/
public class ServerDemo {
public static void main(String[] args) {
try {
ServerSocket ss=new ServerSocket(8888);
System.out.println("服务器已启动,正在连接。。。");
Socket s=ss.accept();
String info="你好,哈哈哈\n";
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(info);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.gh.UDP; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* UDP的接收端
* 实现消息的接收与回复
* @author ganhang
*
*/
public class UDPClientDemo {
public static void main(String[] args) {
byte[] b=new byte[1024];
DatagramPacket dp=new DatagramPacket(b, b.length);//用来接收的数据报包
try {
DatagramSocket ds=new DatagramSocket(5000);//客户端的收发套接字
System.out.println("接收端正在等待接收数据。。");
ds.receive(dp);//接收数据,该方法会造成阻塞
System.out.println("接受成功,对方地址是"+dp.getAddress().getHostName()+":"+dp.getPort());
System.out.println("对方说:"+new String(dp.getData()));
String info="你好,我是客户端";
byte b1[]=info.getBytes();
//用来发送的数据报包
DatagramPacket dp1=new DatagramPacket(b1,0,b1.length,InetAddress.getByName(""),dp.getPort());
ds.send(dp1);
System.out.println("回复成功");
ds.close();
} catch (IOException e) {
e.printStackTrace();
} }
}
package com.gh.UDP; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; /**
* UDP发送端
* 实现消息的发送,和接收对方的回复
* 注意:用来接收的数据报包和用来发送的数据报包的构造方法是不同的
* 同时发送有大小限制,最大为64K
* @author ganhang
*
*/
public class UDPServerDemo {
public static void main(String[] args) {
String info ="你好,我是服务器";
byte [] b= info.getBytes();
try {
DatagramSocket ds =new DatagramSocket(8000);//服务段的收发套接字
//用来发送的数据报包
DatagramPacket dp =new DatagramPacket(b,b.length,
InetAddress.getByName("localhost"),5000);
ds.send(dp);//发给客户端
System.out.println("消息发送完毕,等待回复...");
byte b1[]=new byte[1024];
DatagramPacket dp1=new DatagramPacket(b1,b1.length);//用来接收的数据报包
ds.receive(dp1);
System.out.println("对方回复:"+new String(dp1.getData()));
ds.close(); System.out.println();
} catch (IOException e) {
e.printStackTrace();
}
}
}
java学习之tcp与udp的实现的更多相关文章
- Java学习笔记-基础语法ⅩⅠ-UDP、TCP
网络编程 三要素:IP地址.端口.协议 IP地址:使用ipconfig查看,如果装了VM的话,会有VMnet1.VMnet8和WLAN,net1不能从虚拟机到主机,net8不能从主机到虚拟机,net0 ...
- 【JAVA网络流之TCP与UDP 】
一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...
- Java基础之TCP与UDP
OSI 7层参考模型 物理层 --> 数据链路层 --> 网络层 --> 传输层 --> 会话层 --> 表示层 --> 应用层 按此顺序称为拆包,反之为封包. T ...
- Java中的TCP/UDP网络通信编程
127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- JAVA基础学习day24--Socket基础一UDP与TCP的基本使用
一.网络模型 1.1.OIS参考模型 1.2.TCP/IP参考模型 1.3.网络通讯要素 IP地址:IPV4/IPV6 端口号:0-65535,一般0-1024,都被系统占用,mysql:3306,o ...
- 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?
不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 ...
- 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- [Java网络安全系列面试题] 说一说TCP和UDP的区别与联系?
TCP TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议. 在TCP/IP协议中,IP层主要负责网络主机的定位,数据传输的路由,由I ...
随机推荐
- javascript操作JSON字符
1.先要区分JSON字符串和JSON对象 JSON字符串: Var strJSON = “{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}”, 或者 Var ...
- JavaScript之字符串引号的使用技巧
在JavaScript中可以随意使用引号,但是最好根据字符串包含的字符来选择. 1.如果字符串里面包含了单引号,那就把字符串放在双引号里面 var age = "this is 'pig'? ...
- Matlab常用小技巧及部分快捷键
Matlab常用小技巧一: 1. m文件如果是函数,保存的文件名最好与函数名一致,这点都很清楚.不过容易疏忽的是,m文件名的命名尽量不要是简单的英文单词,最好是由大小写英文/数字/下划线等组成.原因是 ...
- 一个label 里面 显示中文和英文不同颜色
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor yellowColor]; ...
- 注册表缺失导致Windows Server 2008 R2时钟服务W32time不能自启
参照@飘云 http://blog.csdn.net/piaoyunqing/article/details/6323647 的文章. 测试环境中有一台Windows Server 2008 R2的虚 ...
- mysql 存储过程需要DELIMITER
DELIMITER &&CREATE PROCEDURE syncAdvertiser() BEGIN DECLARE id bigint; DECLARE _cur CURSOR F ...
- html 浮动元素
在CSS布局中分为内联元素(display:inline)和块状元素(display:block),块状元素默认会占据一行,可设置高度宽度以及边距,而内联元素不会也不能设置.常见的内联元素有:a.sp ...
- gridview回顾
第一看asp.net是在做项目之前,感觉收获也很大,第二次看gridview是在做完项目之后对GridView的回顾,这次的感觉是:我需要多想点,知识直到用时方觉少.直入正题吧,看gridview. ...
- PHP创建定义数组
$array = array(); $array["key"] = "values"; ?> 在PHP中声明数组的方式主要有两种:1.用arr ...
- Protel99se教程三:新建PCB文件以及PCB基本设定
在上一课,我们绘制好SCH原理图后,在这一节课开始,我们介绍,如何将SCH转化成PCB文件,在这一节课,我们主要给大家讲解,如果新建PCB文件以及载入封装图. 第一步:在Documents目录下,新建 ...