传输层socket通讯之java实现
使用流套接字来示例一个客户/服务器的应用。客户端的应用连接到服务器上面,服务端的应用发送数据到客户端,然后客户将收到的数据显示出来。
服务端代码:
package socket; import java.awt.Event;
import java.awt.Frame;
import java.awt.TextArea;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; public class Server extends Frame {
TextArea display; public Server() {
super("Server");
display = new TextArea(20, 5);
add("Center", display);
resize(300, 150);
show();
}
public void runServer(){
ServerSocket server;
Socket connection;
OutputStream output;
PrintWriter pw = null;
try {
/*建立一个ServerSocket,第一个参数是端口port,第二个参数是是队列长度queueLength,即规定了服务器能够处理的
等待连接的客户数目,如果满了,将自动拒绝客户的请求
*/
server = new ServerSocket(5000,100);
//等待请求,此方法会一直阻塞,直到获得请求才往下走
connection = server.accept();
display.setText("connection received...\n");
display.setText("Sending data...\n");
//获得和Socket相关联的OutputStream的一个引用
output = connection.getOutputStream();
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(connection.getOutputStream())),true);
String s = new String("Connection successful\n");
// //逐个字符发送
// for(int i = 0;i<s.length();i++){
// //进行单一字节或字节组合的发送和接收
// output.write((int)s.charAt(i));
// }
pw.println(s);
display.appendText("Transmission complete. Closing socket.\n");
//关闭socket
connection.close();
pw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//保证用户在应用结束的时候关闭相应的窗口
public boolean handleEvent(Event e){
if(e.id == Event.WINDOW_DESTROY){
hide();
dispose();
System.exit(0);
}
return super.handleEvent(e);
}
public static void main(String args[]){
Server s = new Server();
s.runServer();
}
}
客户端代码:
package socket; import java.awt.Event;
import java.awt.Frame;
import java.awt.TextArea;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException; public class Client extends Frame{
TextArea display;
public Client() {
super("Client");
display = new TextArea(20, 10);
add("Center", display);
resize(300, 150);
show();
}
public void runClient(){
Socket client;
InputStream input;
BufferedReader br = null;
try {
client = new Socket(InetAddress.getLocalHost(),5000);
display.appendText("Created Socket\n");
input = client.getInputStream();
br = new BufferedReader(new InputStreamReader(
client.getInputStream()));
display.appendText("Created input stream\n");
display.appendText("The text from the server is:\n\t");
char c;
//逐个字符读取数据
// while((c = (char)input.read())!='\n'){
// display.appendText(String.valueOf(c));
// }
String str = br.readLine();
display.appendText(str);
client.close();
br.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public boolean handleEvent(Event e){
if(e.id == Event.WINDOW_DESTROY){
hide();
dispose();
System.exit(0);
}
return super.handleEvent(e);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Client c = new Client();
c.runClient();
} }
传输层socket通讯之java实现的更多相关文章
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯 + [备忘] Java和C之间的通讯
Socket网络通讯开发总结之:Java 与 C进行Socket通讯 http://blog.sina.com.cn/s/blog_55934df80100i55l.html (2010-04-08 ...
- java 网络通信传输层协议——UDP和TCP
本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...
- 高性能、高可用性Socket通讯库介绍 - 采用完成端口、历时多年调优!(附文件传输程序)
前言 本人从事编程开发十余年,因为工作关系,很早就接触socket通讯编程.常言道:人在压力下,才可能出非凡的成果.我从事的几个项目都涉及到通讯,为我研究通讯提供了平台,也带来了动力.处理socket ...
- java与C++之间进行SOCKET通讯要点简要解析
原文链接: http://blog.csdn.net/hslinux/article/details/6214594 java与C++之间进行SOCKET通讯要点简要解析 hslinux 0.篇外语 ...
- Socket网络通讯开发总结之:Java 与 C进行Socket通讯(转)
先交待一下业务应用背景:服务端:移动交费系统:基于C语言的Unix系统客户端:增值服务系统:基于Java的软件系统通迅协议:采用TCP/IP协议,使用TCP以异步方式接入数据传输:基于Socket流的 ...
- 数据通讯与网络 第五版第24章 传输层协议-UDP协议部分要点
24.1 介绍 本章节主要集中于传输层协议的解读,图24.1展示TCP.UDP.SCTP在TCP\IP协议栈的位置 24.1.1 服务(Service) 每个协议都提供不同的服务,所以应该合理正确的使 ...
- java socket通讯(二)处理多个客户端连接
通过java socket通讯(一) 入门示例,就可以实现服务端和客户端的socket通讯,但是上一个例子只能实现一个服务端和一个客户端之间的通讯,如果有多个客户端连接服务端,则需要通过多线程技术来实 ...
- java socket通讯(一) 入门示例
一.入门 要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别 二.示例 首先新建了一个java工程,包括两个部分,客户端SocketClient ...
随机推荐
- 抓包工具 Charles 使用心得
前言 虽然实习工作还没有着落,但学习还是要继续的嘛,今天就来学习使用下 Mac 下截取网络封包的工具:Charles. 我想,如果你是个善于利用搜索引擎的人,那么在 Google 中输入「Charle ...
- php 关于经纬度距离计算方法 成功版
1.PHP实现通过经纬度计算距离 单位为公里 function getdistance($lng1,$lat1,$lng2,$lat2)//根据经纬度计算距离 { //将角度转为狐度 $radLat ...
- 关于listener监听器的一些记录
实现ServletContextListener后,需要实现2个方法,一个是contextInitialized,这个方法会在context被创建的时候执行,这个方法有一个参数为ServletCont ...
- 第 10 章 MySQL Server 性能优化
前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的 ...
- Linux常用网络测试命令
Linux常用网络测试命令 1. ifconfig 可以使用ifconfig命令来配置并查看网络接口的配置情况. 例如: (1) 配置eth0的IP地址, 同时激活该设备. #ifcon ...
- nrm是什么?以及nrm的安装与命令
nrm的作用与安装使用 一.nrm是什么? 这是官方的原话: 开发的npm registry 管理工具 nrm, 能够查看和切换当前使用的registry, 最近NPM经常 down 掉, 这个还是很 ...
- MyBatis通用Mapper开发
通常情况下,MyBatis 的增删改查操作需要自己在相应xml中写相关语句, 但是运用相关工具,其实可以很方便的自动生成单表的所有增删改查(通用的多表联合查询还是需要自己写). 也可以根据具体环境,设 ...
- 读 Zepto 源码之集合元素查找
这篇依然是跟 dom 相关的方法,侧重点是跟集合元素查找相关的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zept ...
- Zepto源码分析-ajax模块
源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...
- CORS协议与Spring注解的冲突
众所周知,HTML5的CORS协议,支持各种request method,远胜于仅支持get方式的JSONP. 但今天,我用CORS协议,却一直不成功. 跨域异常,如图 POST http://10. ...