传输层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 ...
随机推荐
- JAVA中断机制详解
Java提供了中断机制,可以使用它来结束一个线程.这种机制要求线程检查它是否被中断了,然后决定是不是响应这个中断请求.线程允许忽略中断请求并继续执行.Java的中断是一种协作机制.也就是说调用线程对象 ...
- 门面(Facade)模式
门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行.门面模式提供一个高层次的接口,使得子系统更易于使用. 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个 ...
- j2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 分布式架构
介绍 <modules> <!-- jeesz 工具jar --> <module>jeesz-utils</module> ...
- Arduino编译bootloader
最近打算自己定制一个Arduino的板子,改改Arduino的烧写机制.好在bootloader都是有源代码的,说干就干,改写前当然要试试这个源码能不能编译,可是到了bootloader目录就茫然了. ...
- layui框架部分功能介绍
注意:代码的所有功能都没有导入layui的css样式 一,分页功能 layui框架分页使用,其实layui分页非常简单只需要传入一个总页数就可以很好运用这个功能 下面就看一下我对layui框架分页的介 ...
- StringBuffer类的使用
//简单记录下Java中StringBuffer类的基本功能使用public class Test01{ public static void main(String[] args){ //New一个 ...
- Struts2 设置global timer
设置全局的timer需要在web.xml中添加servlet, 并设置load-on-startup 为 1, 然后在servlet的init()中开启timer, 具体代码如下: 1. web.xm ...
- 《安卓网络编程》之第一篇 java环境下模拟客户端、服务器端
1.Socket简介 在网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个 ...
- RPi WiringPi安装使用
sudo apt-get install git-core git clone git://git.drogon.net/wiringPi cd wiringPi ./build 使用Exam ...
- 读阿里巴巴Java开发手册v1.2.0之工程结构有感【架构篇】
首先,把昨天那俩条sql语句的优化原因给大家补充一下,第一条效率极低,第二条优化后的,sql语句截图如下: 经过几个高手的评论和个人的分析: 第一条sql语句查询很慢是因为它首先使用了in关键字查询, ...