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编程相关推荐

  1. Linux C++/Java/Web/OC Socket网络编程

    一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...

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

    TCP和UDP是两个传输层协议,广泛应用于网络中不同主机之间传输数据.对任何程序员来说,熟悉TCP和UDP的工作方式都是至关重要的.这就是为什么TCP和UDP是一个流行的Java编程面试问题. Jav ...

  3. Java TCP/UDP socket 编程流程总结

    最近正好学习了一点用java socket编程的东西.感觉整体的流程虽然不是很繁琐,但是也值得好好总结一下. Socket Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据.就 ...

  4. Java TCP/IP Socket 编程 笔记

    http://jimmee.iteye.com/blog/617110 http://jimmee.iteye.com/category/93740 Java TCP/IP Socket 编程 笔记( ...

  5. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  6. JAVA 通过 Socket 实现 TCP 编程

    简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...

  7. java socket ip_JAVA 网络编程 TCP/IP、Socket 和协议设计

    [JAVA 网络编程 TCP/IP.Socket 和协议设计] TCP/IP 协议简介 IP 首先我们看 IP(Internet Protocol)协议.IP 协议提供了主机和主机间的通信. 为了完成 ...

  8. asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  9. java tcp实现_JAVA 通过 Socket 实现 TCP 编程

    简介 TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机 ...

最新文章

  1. Gin 框架学习笔记(02)— 参数自动绑定到结构体
  2. html页面正则表达式,使用正则表达式计算HTML页面标记
  3. Linux运维必会的实战编程笔试题(19题)
  4. excel在线_怎么能在线免费将PDF转Excel?
  5. 用c#开发微信 (13) 微统计 - 阅读分享统计系统 3 UI设计及后台处理
  6. 架构师未来性的基础:简单性
  7. Hbase 二级索引 Solr int字段排序问题 can not sort on multivalued field
  8. 設置Linux保留物理內存並使用 (1)
  9. linux命令kill_什么是Linux中的kill命令?
  10. 隐马尔可夫模型HMM与维特比Veterbi算法(一)
  11. 国内互联网文章转摘习惯与现状一瞥
  12. 测试用例设计方法-场景法详解
  13. 笔记本电脑 用 VGA 线 外接显示器 频闪
  14. 安卓手机刷linux超频内核,内核超频教程
  15. 在总账模块结账的时候提示总账和明细账对账不平结不了账
  16. 实战案例——小帅优化网站,70天目标关键词全部第一
  17. android 单位转换工具,Android单位转换工具类
  18. 【Torch API】pytorch 中torch.ones_like和torch.zeros_like函数详解
  19. cascode电流镜
  20. 数的概念扩展——复数

热门文章

  1. MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具
  2. 安全——《微服务设计》读书笔记
  3. 程序员的情人节礼物:当天微软开始Build 2017登记
  4. get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
  5. 【ArcGIS微课1000例】0014:ArcGIS中如何将kml(kmz)文件转shp,并进行投影转换?
  6. Android之解决aidl里面函数参数太大不能跨进程通信的问题
  7. Android之React native的介绍和入门指南
  8. 什么时候告白最合适?
  9. 与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......
  10. 左手菲尔兹右手突破奖,这个中国女婿其实是英国贵族?拿到300万奖金后他这样说……...