Socket通信的简单例子
客户端代码:
- package com.bobohe.socket;
- import java.io.*;
- import java.net.*;
- public class TalkClient {
- public static void main(String args[]) {
- try {
- Socket socket = new Socket("127.0.0.1", 4700);
- // 向本机的4700端口发出客户请求
- BufferedReader sin = new BufferedReader(new InputStreamReader(
- System.in));
- // 由系统标准输入设备构造BufferedReader对象
- PrintWriter os = new PrintWriter(socket.getOutputStream());
- // 由Socket对象得到输出流,并构造PrintWriter对象
- BufferedReader is = new BufferedReader(new InputStreamReader(
- socket.getInputStream()));
- // 由Socket对象得到输入流,并构造相应的BufferedReader对象
- String readline;
- readline = sin.readLine(); // 从系统标准输入读入一字符串
- while (!readline.equals("bye")) {
- // 若从标准输入读入的字符串为 "bye"则停止循环
- os.println(readline);
- // 将从系统标准输入读入的字符串输出到Server
- os.flush();
- // 刷新输出流,使Server马上收到该字符串
- System.out.println("Client:" + readline);
- // 在系统标准输出上打印读入的字符串
- System.out.println("Server:" + is.readLine());
- // 从Server读入一字符串,并打印到标准输出上
- readline = sin.readLine(); // 从系统标准输入读入一字符串
- } // 继续循环
- os.close(); // 关闭Socket输出流
- is.close(); // 关闭Socket输入流
- socket.close(); // 关闭Socket
- } catch (Exception e) {
- System.out.println("Error" + e); // 出错,则打印出错信息
- }
- }
- }
服务端代码:
- package com.bobohe.socket;
- import java.io.*;
- import java.net.*;
- import java.applet.Applet;
- public class TalkServer {
- public static void main(String args[]) {
- try {
- ServerSocket server = null;
- try {
- server = new ServerSocket(4700);
- // 创建一个ServerSocket在端口4700监听客户请求
- } catch (Exception e) {
- System.out.println("can not listen to:" + e);
- // 出错,打印出错信息
- }
- Socket socket = null;
- try {
- socket = server.accept();
- // 使用accept()阻塞等待客户请求,有客户
- // 请求到来则产生一个Socket对象,并继续执行
- } catch (Exception e) {
- System.out.println("Error." + e);
- // 出错,打印出错信息
- }
- String line;
- BufferedReader is = new BufferedReader(new InputStreamReader(
- socket.getInputStream()));
- // 由Socket对象得到输入流,并构造相应的BufferedReader对象
- PrintWriter os = new PrintWriter(socket.getOutputStream());
- // 由Socket对象得到输出流,并构造PrintWriter对象
- BufferedReader sin = new BufferedReader(new InputStreamReader(
- System.in));
- // 由系统标准输入设备构造BufferedReader对象
- System.out.println("Client:" + is.readLine());
- // 在标准输出上打印从客户端读入的字符串
- line = sin.readLine();
- // 从标准输入读入一字符串
- while (!line.equals("bye")) {
- // 如果该字符串为 "bye",则停止循环
- os.println(line);
- // 向客户端输出该字符串
- os.flush();
- // 刷新输出流,使Client马上收到该字符串
- System.out.println("Server:" + line);
- // 在系统标准输出上打印读入的字符串
- System.out.println("Client:" + is.readLine());
- // 从Client读入一字符串,并打印到标准输出上
- line = sin.readLine();
- // 从系统标准输入读入一字符串
- } // 继续循环
- os.close(); // 关闭Socket输出流
- is.close(); // 关闭Socket输入流
- socket.close(); // 关闭Socket
- server.close(); // 关闭ServerSocket
- } catch (Exception e) {
- System.out.println("Error:" + e);
- // 出错,打印出错信息
- }
- }
- }
Socket通信的简单例子的更多相关文章
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- 16 Socket通信(简单例子)
服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Da ...
- 170411、java Socket通信的简单例子(UDP)
服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; class UDPServer { public stat ...
- 170410、java Socket通信的简单例子(TCP)
服务端代码: package com.bobohe.socket; import java.io.*; import java.net.*; import java.applet.Applet; pu ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 基于TCP的socket通信过程及例子
Socket也叫套接字,用来实现网络通讯,通过调用系统提供的API,可以和远程的机子传输数据.Socket有很多种协议,而这篇文章主要讨论TCP部分的内容,也就是说后面说的内容主要是指TCP Sock ...
- php socket通信的简单实现
socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
随机推荐
- Annotation 使用备忘2
title: Annotation 使用备忘 date: 2018-01-02 20:48:43 tags: [Annotation] categories: [Programming,Java] - ...
- nodejs 几篇有用的文章
深入浅出Node.js(三):深入Node.js的模块机制 http://www.infoq.com/cn/articles/nodejs-module-mechanism Node.js简单介绍并实 ...
- [译文]c#扩展方法(Extension Method In C#)
原文链接: https://www.codeproject.com/Tips/709310/Extension-Method-In-Csharp 介绍 扩展方法是C# 3.0引入的新特性.扩展方法使你 ...
- [ c++] cmake 编译时 undefined reference to `std::cout' 错误的解决方案
cmake .. 和 make 之后,出现如下错误 Linking CXX executable ../../../bin/ModuleTest CMakeFiles/ModuleTest.dir/ ...
- Ipython使用
目录 Ipython说明 Ipython使用 安装使用 TAB键自动补全 内省(?命令) 执行系统命令(!) 与操作系统交互 %run命令执行文件代码 %paste %cpaste命令执行剪贴板代码 ...
- iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (以后谁不会了,直接将连接给他)
iOS 开发中,关于xxx.xcodeproj 文件冲突的解决方案 (一有冲突要手把手教一遍,太麻烦了,现在总结下,以后谁不会了,连接直接发他). 关于xxx.xcodeproj 文件冲突的话,是比较 ...
- C++:模板——函数模板1
一.为什么使用函数模板 假设我们在程序中需要比较两个变量的大小,但变量的类型可能是int.float或者double,此时为了满足程序的要求我们可能会在程序中编写多个函数,如: //比较两个int型变 ...
- 1~n中1的和
题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数: 要求:写一个函数f(n),返回1到n之间出现“1“的个数, 思路: 1.先判断这个数共多少位,假设为n位: ...
- 超实用 1 ArrayList 链表
package ArrayList链表; import java.util.*; public class kk1 { /** * 作者:Mr.Fan * 功能:记住ArrayList链表 */ pu ...
- NABCD(校园包车)
广州商学院包车 N(need) 各个高校包车需求量大,然而校园内包车信息太散乱,售票地点不确定,有些老师.学生特别是新生,甚至不知有校园包车这一回事, 随着信息网络的发展,为了给师生带来校园更多的方便 ...