BSD Socket (java)
服务器
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; public class Server {
public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(10000);
System.out.println("伺服中.......");
while (true) {
// The method blocks until a connection is made.
// 阻塞直至建立某个连接
Socket s = ss.accept(); // 接收数据
InputStream in = s.getInputStream();
byte[] b = new byte[1024 * 1024];
int len = in.read(b);
String requestData = new String(b, 0, len);
System.out.println("客户端请求数据:" + requestData); // 处理数据
String responseData = requestData.toUpperCase(); // 响应结果
OutputStream out = s.getOutputStream();
out.write(responseData.getBytes()); in.close();
out.close();
s.close(); // 关闭服务
if (requestData.equalsIgnoreCase("exit")) {
break;
}
}
ss.close();
}
}
客户端
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException; public class Client { public static void main(String[] args) throws UnknownHostException,
IOException {
Socket s = new Socket("172.16.162.238", 10000); // 发起请求
OutputStream out = s.getOutputStream();
out.write(args[0].getBytes()); // 接收处理结果
InputStream in = s.getInputStream();
byte[] b = new byte[1024 * 1024];
int len = in.read(b);
String result = new String(b, 0, len);
System.out.println("处理结果是:" + result); in.close();
out.close();
s.close(); } }
测试:
客户端请求参数
Program arguments:abc
客户端显示结果:
处理结果是:ABC
服务器显示结果:
伺服中.......
客户端请求数据:abc
注意:
accept方法会加锁,直到建立连接。
多个客户端连接服务器时,需排队依次处理。
BSD Socket (java)的更多相关文章
- ZeroMQ(java)中对IO的封装(StreamEngine)
哎,各种各样杂七杂八的事情...好久没有看代码了,其实要搞明白一个与IO相关的框架,最好的办法就是把它的I/0的读写两个过程搞清楚...例如在netty中,如果能将eventLoop的运行原理搞清楚, ...
- Android(java)学习笔记160:Framework运行环境之 Android进程产生过程
1.前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序 ...
- Android(java)学习笔记103:Framework运行环境之 Android进程产生过程
1. 前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程 ...
- 201871010104-陈园园《面向对象程序设计(java)》第十六周学习总结
201871010104-陈园园<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- 如何夯实(Java)编程基础,并深入学习和提高
如何夯实(Java)编程基础,并深入学习和提高? 240赞同反对,不会显示你的姓名 匿名用户 240 人赞同 多学习...网上自学的学习网站很多,见以下榜单~一.汇总榜单: 公开课_学习网站导航 收录 ...
- TCL校园招聘——软件开发工程师(java) 只招5个。。。
简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...
- UEditor上传图片到七牛云储存(java)
我们的网站一般放在虚拟空间或者服务器上,图片如果存在本地目录,会占用很多空间和流量,还增加了负担,好的办法是把图片存放到云储存服务里面,平时用url去拿 云储存:普遍说又拍云和七牛比较好,看到七牛免费 ...
- 开源工作流 Bonita BPM (JAVA)
Bonita BPM 开源工作流 Bonita BPM (JAVA) http://www.bonitasoft.com/
- 编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码
转自:编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码 JDK:java version “1.8.0_31”Java(TM) SE Runtime Environment ( ...
随机推荐
- linux 中特殊符号用法详解
# 井号 (comments)#管理员 $普通用户 脚本中 #!/bin/bash #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行 ...
- linux文件格式转换:<U+FEFF> character showing up in files. How to remove them?
You can easily remove them using vim, here are the steps: 1) In your terminal, open the file using v ...
- Linux就业技术指导(二):简历项目经验示例
一,期中项目经验示例 1.1 新服务器上线搭建系统环境 1,根据现有结构部署工具(PXE+kickstart) 2,结合应用系统需求定制部署模版 3,制作系统优化等一键执行脚本 4,自动化部署实施 5 ...
- django创建工程,用命令
django创建工程的命令 >>python C:\Python33\Lib\site-packages\django\bin\django-admin.py startproject p ...
- android笔记 : Content provider内容提供器
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能. 内容提供器的用法一般有两种,一种是使用现有的内容提供器来读取和操作相应程序中的数据,另一种是创建自己的内 ...
- 一些常用的c++系统函数
数学<cmath><math.h>: 1 三角函数 double sin (double); double cos (double); double tan (double); ...
- haproxy 参数说明
说明: 1.haproxy的配置段有"global","defaults","listen","frontend"和&q ...
- 7.Reverse Integer (INT; Overflow)
Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 思路:要注意溢出 ...
- 控制span的width属性及display属性值的选择
给span设置width样式,会发现并没有改变它的宽度,但有时候我们需要给它设置固定的宽度,那么就可以设置它的display样式,改变span的显示模式就好了. span默认显示模式是inline,无 ...
- Microsoft SQL Server, 错误:4064的解决方法 (转载)
SQL SERVER – Fix : Error: 4064 – Cannot open user default database. Login failed. Login failed for u ...