TCP通信服务端及客户端代码
Java TCP通信使用的是Socket(客服端)和ServerSocket(服务端),具体代码如下。
server端代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket; public class TcpService {
public static void main(String[] args) throws Exception {
//建立服务器端ServerSocket对象只需绑定一个端口
ServerSocket listen = new ServerSocket();
Socket client = null;
Boolean flag = true;
while(flag){
System.out.println("Server-->: ");
client = listen.accept();//通过accept()方法得到连接到次服务器端口对应的客服端Socket
new Thread(new ThreadServer(client)).start();
} listen.close();
}
}
class ThreadServer implements Runnable{
private Socket client; public ThreadServer(Socket client){
this.client = client;
} @Override
public void run() {
BufferedReader buf = null;
PrintStream out = null;
try{
out = new PrintStream(this.client.getOutputStream());
buf = new BufferedReader(new InputStreamReader(this.client.getInputStream())); boolean flag = true;
while(flag){
String str = buf.readLine(); if(null == str){
flag = false;
}else{
if("bye".equals(str)){
flag = false;
}else{
str = "Respone to client by server:" + str + "\n";out.write(str.getBytes());
}
}
}
this.client.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
Client端代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket; public class TcpClient {
public static void main(String[] args)throws IOException{
//建立客服端Socket,需写入服务器端主机地址以及服务端口
Socket client = new Socket("localhost",9999);
BufferedReader buf = null;
PrintStream out = null;
BufferedReader input = null;
//键盘录入
input = new BufferedReader(new InputStreamReader(System.in));
//从服务器端得到的输入流
buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
//输出
out = new PrintStream(client.getOutputStream());
//建立标志,用于判断结束会话
boolean flag = true;
while(flag){
System.out.print("Input:");
String str = input.readLine();
out.println(str); if("bye".equals(str)){
flag = false;
}else{
String echo = buf.readLine();
System.out.println(echo);
}
}
buf.close();
client.close();
}
}
测试:
需先将服务器端运行开启,之后才能运行客户端,结果如下:
服务器端:
Server-->:
Server-->:
客户端:
Input:hello world!
Respone to client by server:hello world!
Input:
TCP通信服务端及客户端代码的更多相关文章
- java TCP 通信:服务端与客服端
1.首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输 ...
- socket模块实现基于UDP聊天模拟程序;socketserver模块实现服务端 socket客户端代码示例
socket模块 serSocket.setblocking(False) 设置为非阻塞: #coding=utf-8 from socket import * import time # 用来存储所 ...
- Java网络编程(TCP协议-服务端和客户端交互)
客户端: package WebProgramingDemo; import java.io.IOException; import java.io.InputStream; import java. ...
- 基于java NIO 的服务端与客户端代码
在对java NIO selector 与 Buffer Channel 有一定的了解之后,我们进行编写java nio 实现的 客户端与服务端例子: 服务端: public class NIOC ...
- C++封装的基于WinSock2的TCP服务端、客户端
无聊研究Winsock套接字编程,用原生的C语言接口写出来的代码看着难受,于是自己简单用C++封装一下,把思路过程理清,方便自己后续翻看和新手学习. 只写好了TCP通信服务端,有空把客户端流程也封装一 ...
- gSOAP calc服务端与客户端示例
1. Web服务定义描述头文件 typedef double xsd__double; int ns__add(xsd__double a, xsd__double b, xsd__double &a ...
- 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
[转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...
- C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
Winform窗体实现服务端和客户端通信的例子,是参考这个地址 http://www.cnblogs.com/longwu/archive/2011/08/25/2153636.html 进行了一些异 ...
- 【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
前言: MQTT广泛应用于工业物联网.智能家居.各类智能制造或各类自动化场景等.MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信.机器与物联网通信等. ...
随机推荐
- ant design pro (八)构建和发布
一.概述 原文地址:https://pro.ant.design/docs/deploy-cn 二.详细 2.1.构建 当项目开发完毕,只需要运行一行命令就可以打包你的应用: npm run buil ...
- sqlserver2008 R2中查找未使用过的索引
转自:http://blog.csdn.net/yangzhawen/article/details/7247393 sqlserver2008 R2中查找未使用过的索引: o.name AS 表名 ...
- Redis总结(二)C#中如何使用redis(转载)
上一篇讲述了安装redis<Redis总结(一)Redis安装>,同时也大致介绍了redis的优势和应用场景.本篇着重讲解.NET中如何使用redis和C#. Redis官网提供了很多开源 ...
- 线程池c3p0和dbcp2的配置初始化实例
一.c3p0 public class ConnectionManager { public static ComboPooledDataSource dataSource; static { try ...
- C++ 编译,执行过程 具体解释。
要更深入了解C++, 必需要知道一个程序从開始到结束都干了些什么, 怎么干的. 所以我从C++编译到执行过程,解析下程序是怎么跑的. 首先,初略的说一下之前C++的编译过程.C++编译过程包含预编译- ...
- Linux两块4TB的数据磁盘创建8TB的Raid0
分区表MBR与GPT的说明: MBR:主引导记录,是传统的分区机制,应用于绝大多数使用BIOS的PC设备,MBR+BIOS,MBR支持32位和64位系统,支持的分区数量有限,MBR只支持不超过2T的硬 ...
- AutoFac文档3(转载)
目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 服务类型,名称和键 同 ...
- 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT
你遇到过TIME_WAIT的问题吗? 我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下.哎呀妈呀 ...
- 二叉排序树及其C代码
1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree).其定义为:二叉排序树或者是空树, 或者是满足例如以下性质的二叉树 ...
- 线程相关函数(3)-pthread_detach()将某个线程设成分离态
#include <pthread.h>int pthread_detach(pthread_t tid); pthread_t tid: 分离线程的tid返回值:成功返回0,失败返回错误 ...