传输层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 ...
随机推荐
- 开源自己写的一个拖拽库,兼容到IE8+
github地址:https://github.com/qiangzi7723/draggable 目前这个库的兼容做到了兼容IE8,所以如果需要兼容IE8的朋友不妨试试.库里面写了很多的注释,对于想 ...
- Linux 下安装RabbitMQ 3.6.1
1.安装erlang 依赖 yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel 2.安装erlang ### 设 ...
- 【转】一分钟内检查Linux服务器性能
近期看了一篇运维排查的问题的十条命令,仔细看了一下,发现就是自己平时经常使用的一些,感觉还不错,就转一发~分享学习~ 如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出 ...
- SmartCoder每日站立会议03
1.站立会议内容 今天是站立会议第三天,由于我们是做微信小程序,所以很多方面大家都在试验学习阶段,但是经过之前的了解和最近的学习,大家还是有很大进步的.首页简单的css样式已出,正在考虑首页样式再进行 ...
- android相对布局中控件的常用属性【转】
Android布局属性详解 RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false android:layout_centerHorizontal 水平居中 andr ...
- oracle创建用户四部曲
创建用户一般分四步: 第一步:创建临时表空间 第二步:创建数据表空间 第三步:创建用户并制定表空间 第四步:给用户授予权限 创建临时表空间 create temporary tablespace ho ...
- Ionic3新特性--页面懒加载1
Ionic3新的懒加载机制给我带来了如下新特性: 避免在每一个使用到某Page的Module或其他Page中重复的import这个类(需要写一堆路径) 允许我们通过字符串key在任何想使用的地方获取某 ...
- Java异常类(Throwable)
一.异常类体系 二.异常类由来与定义 [异常类的由来]:Java把程序在运行时出现的各种不正常情况也看成了对象, 提取属性和行为进行描述,比如异常名称,异常信息,异常发生位置,从而形成了各种异常类 [ ...
- 本地修改js代码并时时生效的解决办法
js作为客户端语言(当然它也可以作服务端语言),非常强悍,一般情况下,我们都是在开发阶段不停的改,然后上线之后就作为稳定运行的代码. 然而有时候可能因为js写得有问题,导致上线后,某些功能无法使用,这 ...
- Docker容器管理平台Humpback进阶-私有仓库
Docker私有仓库 在 Docker 中,当我们执行 docker pull xxx 的时候,可能会比较好奇,docker 会去哪儿查找并下载镜像呢? 它实际上是从 registry.hub.doc ...