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. 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包

    一 .函数 1.1. 函数的定义和调用 函数的定义以funckeyword作为前缀,接着是函数名字,接着跟着一个能够带有參数.也能够不带參数的圆括号.接着用-> 指示函数的返回类型. 函数运行体 ...

  2. 第八章 C#面向对象编程(Object-Oriented Programming,OOP)简介

    .NET OOP 一.面向对象编程的含义 1.函数(过程化)编程常常导致单一的应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块) 而使用OOP技术,常常使用许多代码模块,每个模块提供特 ...

  3. Unity3d 通过协程来实现文件的全部加载后执行

    相信大家会经常遇到在游戏中需要WWW从本地或者服务器上获取数据,而我们通常容易会犯下面这种个错误:当数据较少或者网速较好时程序运行正常.而当数据较大或者网速不好时程序会出错误.比如卡住. 所以我们要使 ...

  4. C++数组与指针

    指向数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址.指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中) ...

  5. jquery+easy ui 实现表格列头筛选

    示例代码 1.筛选的下拉 <a href="javascript:void(0)" id="filterStatus" class="easyu ...

  6. INDEX相关

    1.索引应该建立在WHERE子句经常用到的表列上,如果在大表上频率使用某列或者某几列作为条件执行检索操作,并且检索的行数低于总行数的15%,那么应该考虑在该几行上添加索引. 2.为了提高多表连接的性能 ...

  7. selenium 学习笔记 ---新手学习记录(3) 问题总结(java)

    1.验证码简单处理 /** * 验证码等待输入函数 * */ private void ZcYzm(WebDriver driver){ boolean flag=false; while(flag= ...

  8. 微软Xbox360 E与微软Xbox360 slim Kinect套装(1TB)哪个好

    原文地址:http://product.pchome.net/digi_home_playstation_microsoft_xbox360slimkinect1tb/381793.html 微软Xb ...

  9. 基于SIM 卡卡基不同制作工艺的研究

    1 国内外现行的SIM 卡卡基制作工艺 SIM 卡由卡基和芯片两部分组成.卡基上有植入芯片的台阶式芯片槽,SIM 卡的芯片通过多点焊接植入台阶式芯片槽之中与卡基组成SIM 卡,然后经过个性化数据处理, ...

  10. cocos2d-x中的尺寸之三

    通过上面两个文章的分析,我们在这个博文里做个总结: CCEGLView::getFrameSize()返回的是窗口相对于屏幕像素的尺寸,这个尺寸,只要窗口没变化,值就不会变化 CCDirector:: ...