java socket send_java socket编程
TcpServer
Server端所要做的事情主要是建立一个通信的端点,然后等待客户端发送的请求。典型的处理步骤如下:
1. 构建一个ServerSocket实例,指定本地的端口。这个socket就是用来监听指定端口的连接请求的。
2. 调用socket的accept()方法来获得下面客户端的连接请求。通过accept()方法返回的socket实例,建立了一个和客户端的新连接。
3.通过这个返回的socket实例获取InputStream和OutputStream,可以通过这两个stream来分别读和写数据。
4.结束的时候调用socket实例的close()方法关闭socket连接。
packagesocket;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.Reader;importjava.net.ServerSocket;importjava.net.Socket;public classServer {public static void main(String args[]) throwsIOException {//为了简单起见,所有的异常信息都往外抛
int port = 8899;//定义一个ServerSocket监听在端口8899上
ServerSocket server = newServerSocket(port);//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
Socket socket =server.accept();//跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。
Reader reader = newInputStreamReader(socket.getInputStream());char chars[] = new char[64];intlen;
StringBuilder sb= newStringBuilder();while ((len=reader.read(chars)) != -1) {
sb.append(new String(chars, 0, len));
}
System.out.println("from client: " +sb);
reader.close();
socket.close();
server.close();
}
}
TcpClient端
客户端的请求过程稍微有点不一样:
1.构建Socket实例,通过指定的远程服务器地址和端口来建立连接。
2.通过Socket实例包含的InputStream和OutputStream来进行数据的读写。
3.操作结束后调用socket实例的close方法,关闭。
packagesocket;importjava.io.OutputStreamWriter;importjava.io.Writer;importjava.net.Socket;public classClient {public static void main(String args[]) throwsException {//为了简单起见,所有的异常都直接往外抛
String host = "10.21.23.144"; //要连接的服务端IP地址
int port = 8899; //要连接的服务端对应的监听端口//与服务端建立连接
Socket client = newSocket(host, port);//建立连接后就可以往服务端写数据了
Writer writer = newOutputStreamWriter(client.getOutputStream());
writer.write("Hello mynona Server.");
writer.flush();//写完后要记得flush
writer.close();
client.close();
}
}
Udp:
server端
因为UDP协议不需要建立连接,它的过程如下:
1. 构造DatagramSocket实例,指定本地端口。
2. 通过DatagramSocket实例的receive方法接收DatagramPacket.DatagramPacket中间就包含了通信的内容。
3. 通过DatagramSocket的send和receive方法来收和发DatagramPacket.
packageUdp2;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;public classUDPServer {public static void main(String args[]) throwsException
{//监听9876端口
DatagramSocket serverSocket = new DatagramSocket(9876);byte[] receiveData = new byte[1024];byte[] sendData = new byte[1024];while(true)
{//构造数据包接收数据
DatagramPacket receivePacket = newDatagramPacket(receiveData, receiveData.length);//接收数据
serverSocket.receive(receivePacket);//解析数据
String sentence = newString( receivePacket.getData());
System.out.println("RECEIVED: " +sentence);
InetAddress IPAddress=receivePacket.getAddress();int port =receivePacket.getPort();
String capitalizedSentence=sentence.toUpperCase();
sendData=capitalizedSentence.getBytes();//构造发送数据包发送数据
DatagramPacket sendPacket = newDatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
UdpClient:
1. 构造DatagramSocket实例。
2.通过DatagramSocket实例的send和receive方法发送DatagramPacket报文。
3.结束后,调用DatagramSocket的close方法关闭。
packageUdp2;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;public classUDPClient {public static void main(String args[]) throwsException
{
BufferedReader inFromUser=
new BufferedReader(newInputStreamReader(System.in));
DatagramSocket clientSocket= newDatagramSocket();
InetAddress IPAddress= InetAddress.getByName("localhost");
System.out.println("IPAddress:" +IPAddress);byte[] sendData = new byte[1024];byte[] receiveData = new byte[1024];
String sentence=inFromUser.readLine();
sendData=sentence.getBytes();//发送数据
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);//接收数据
DatagramPacket receivePacket = newDatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence= newString(receivePacket.getData());
System.out.println("FROM SERVER:" +modifiedSentence);
clientSocket.close();
}
}
参考来源:http://shmilyaw-hotmail-com.iteye.com/blog/1556187
http://haohaoxuexi.iteye.com/blog/1979837
java socket send_java socket编程相关推荐
- Linux C++/Java/Web/OC Socket网络编程
一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...
- Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤...
TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据.对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的.这就是为什么TCP和UDP是一个流行的Java编程面试问题. Jav ...
- Java TCP/UDP socket 编程流程总结
最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就 ...
- Java TCP/IP Socket 编程 笔记
http://jimmee.iteye.com/blog/617110 http://jimmee.iteye.com/category/93740 Java TCP/IP Socket 编程 笔记( ...
- 浅谈JAVA中如何利用socket进行网络编程(二)
转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- JAVA 通过 Socket 实现 TCP 编程
简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...
- java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计
[JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...
- asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- java tcp实现_JAVA 通过 Socket 实现 TCP 编程
简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...
最新文章
- Gin 框架学习笔记(02)— 参数自动绑定到结构体
- html页面正则表达式,使用正则表达式计算HTML页面标记
- Linux运维必会的实战编程笔试题(19题)
- excel在线_怎么能在线免费将PDF转Excel?
- 用c#开发微信 (13) 微统计 - 阅读分享统计系统 3 UI设计及后台处理
- 架构师未来性的基础:简单性
- Hbase 二级索引 Solr int字段排序问题 can not sort on multivalued field
- 設置Linux保留物理內存並使用 (1)
- linux命令kill_什么是Linux中的kill命令?
- 隐马尔可夫模型HMM与维特比Veterbi算法(一)
- 国内互联网文章转摘习惯与现状一瞥
- 测试用例设计方法-场景法详解
- 笔记本电脑 用 VGA 线 外接显示器 频闪
- 安卓手机刷linux超频内核,内核超频教程
- 在总账模块结账的时候提示总账和明细账对账不平结不了账
- 实战案例——小帅优化网站,70天目标关键词全部第一
- android 单位转换工具,Android单位转换工具类
- 【Torch API】pytorch 中torch.ones_like和torch.zeros_like函数详解
- cascode电流镜
- 数的概念扩展——复数
热门文章
- MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具
- 安全——《微服务设计》读书笔记
- 程序员的情人节礼物:当天微软开始Build 2017登记
- get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
- 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
- Android之解决aidl里面函数参数太大不能跨进程通信的问题
- Android之React native的介绍和入门指南
- 什么时候告白最合适?
- 与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......
- 左手菲尔兹右手突破奖,这个中国女婿其实是英国贵族?拿到300万奖金后他这样说……...