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的实现的更多相关文章

  1. Java学习笔记-基础语法ⅩⅠ-UDP、TCP

    网络编程 三要素:IP地址.端口.协议 IP地址:使用ipconfig查看,如果装了VM的话,会有VMnet1.VMnet8和WLAN,net1不能从虚拟机到主机,net8不能从主机到虚拟机,net0 ...

  2. 【JAVA网络流之TCP与UDP 】

    一.ServerSocket java.lang.Object |-java.net.ServerSocket 有子类SSLServerSocket. 此类实现服务器套接字.服务器套接字等待请求通过网 ...

  3. Java基础之TCP与UDP

    OSI 7层参考模型 物理层 --> 数据链路层 --> 网络层 --> 传输层 --> 会话层 --> 表示层 --> 应用层 按此顺序称为拆包,反之为封包. T ...

  4. Java中的TCP/UDP网络通信编程

    127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...

  5. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  6. JAVA基础学习day24--Socket基础一UDP与TCP的基本使用

    一.网络模型 1.1.OIS参考模型 1.2.TCP/IP参考模型 1.3.网络通讯要素 IP地址:IPV4/IPV6 端口号:0-65535,一般0-1024,都被系统占用,mysql:3306,o ...

  7. 牛客网Java刷题知识点之UDP协议是否支持HTTP和HTTPS协议?为什么?TCP协议支持吗?

    不多说,直接上干货! 福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑          ...

  8. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  9. [Java网络安全系列面试题] 说一说TCP和UDP的区别与联系?

    TCP TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议. 在TCP/IP协议中,IP层主要负责网络主机的定位,数据传输的路由,由I ...

随机推荐

  1. UIView 中 frame, bounds, center 属性的关系

    最近一直在学 iOS 开发,所以专门创建了这样一个类别,将自己学习中的一些问题整理,记录下来.由于自己是初学者,所以所写的文章非常基础,写这个类别一是为了给自己留下存 档,二是为了给和我有同样问题的初 ...

  2. oracle 获取系统时间(转)

    Oracle中如何获取系统当前时间   select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;    ORACLE里获取一个时间的年.季. ...

  3. JavaWEB HTTP请求中POST与GET的区别

    From 的get 和post方法.在数据传输过程中分别对应了HTTP协议中的GET和POST方法. 二者主要区别: GET从服务其获取数据;POST上传数据. GET将表单中的数据按照variabl ...

  4. Android 开发笔记“context和getApplicationContext”

    在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder( ...

  5. codeforces 607B. Zuma 区间dp

    题目链接 给一个长度为n的序列, 每一次可以消去其中的一个回文串, 问最少几次才可以消完. 代码很清楚 #include <iostream> #include <vector> ...

  6. PowerShell Remove all user defined variable in PowerShell

    When PS scripts executes, it is possibly create much user defined variables. So, sometimes these var ...

  7. DM368 arm板GDB远程调试

    参考: http://www.erchashu.com/wiki/eclipse-cdt-gdb-arm-app-cross-debug 远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通 ...

  8. 将默认首页设置成index.do的方法

    变态欺骗法,今天csdn一个前辈的,学习了,公司服务器是weblogic的,也可以欺骗. 但是我又非常迫切.非常盼望.非常渴望使用index.do做首页,怎么办? Tomcat中用一段注释: When ...

  9. jquery简单的插件

    $(function() { $.fn.插件名称 = function(options) { var defaults = { Event : "click", //触发响应事件 ...

  10. JavaScript 高级程序设计(第3版)笔记——chapter7:函数表达式

    一.函数表达式的语法形式 匿名函数 var functionName = function(arg0, arg1, arg2) { //函数体 } 二.函数表达式没有函数提升 var a = 1; i ...