服务器和客户端Socket单向通信例子
看了两天socket通信,也参考了网上其他人是怎么写的。
下面我把最简单的socket例程贴出来
server代码:
public class Server {
private static int port = 8888;
private static ServerSocket serverSocket;
private static Socket socket;
public static void main(String args[]) throws IOException {
serverSocket = new ServerSocket(port, 2);
socket = serverSocket.accept();
System.out.println("客户端已链接");
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("来自服务器的消息");
while (true){
/*
//读取客户端发送的信息
String str = dis.readUTF();
System.out.println("From 客户端:"+str);
if(str.equals("bye")){
socket.close();
serverSocket.close();
break;
}
*/
// 发送键盘输入的一行
String s = new BufferedReader(new InputStreamReader(System.in)).readLine();
dos.writeUTF(s);
}
}
}
Client代码:
public class Client {
private static int port = 8888;
private static String host = "localhost";
private static Socket socket;
public static void main(String args[]) throws UnknownHostException,
IOException {
socket = new Socket(host, port);
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("来自客户端的消息");
while(true){
//读取服务器发送的信息
String str = dis.readUTF();
System.out.println("From 服务器:"+str);
if(str.equals("bye")){
socket.close();
System.out.println("关闭socket");
break;
}
// 发送键盘输入的一行
//String s = new BufferedReader(new InputStreamReader(System.in)).readLine();
//dos.writeUTF(s);
}
}
}
因为readLine()是一个阻塞函数,接收不到消息会阻塞在那里。如果把两个文件中的注释去掉后,服务器和客户端必须你一句我一句,才能正常通信。目前还没有解决办法。
所以,先实现单向通信:server发送数据,client接收数据。
服务器和客户端Socket单向通信例子的更多相关文章
- 一个 Java 的 Socket 服务器和客户端通信的例子
一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请 ...
- socket系列之客户端socket——Socket类
假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含 ...
- java 网络编程 TCP协议 java 服务器和客户端 java socket编程
一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程: 先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客 ...
- Socket通信——服务器和客户端相互通信
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. Socket和S ...
- 服务器中判断客户端socket断开连接的方法
1, 如果服务端的Socket比客户端的Socket先关闭,会导致客户端出现TIME_WAIT状态,占用系统资源. 所以,必须等客户端先关闭Socket后,服务器端再关闭Socket才能避免TIME_ ...
- Linux系统编程(37)—— socket编程之UDP服务器与客户端
典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- c#Socket服务器与客户端的开发(1)
上个项目中用到了Socket通讯,项目中直接借助SuperSocket实现,但是我觉得这毕竟是一个我没接触过的东西,所以也顺便学习了一下原生socket的使用,做了一个socket服务器与客户端的开发 ...
- c#Socket服务器与客户端的开发(2)
上一篇文章我们使用原生的socket分别实现了服务器和客户端, 本篇文章使用SuperSocket来开发实现服务器, 之前也介绍了SuperSocket是一个轻量级, 跨平台而且可扩展的 .Net/M ...
随机推荐
- indexOf和contains查找的字符串是空字符,返回值是什么呢?
一直以为indexOf方法查找的字符串如果不匹配返回值就是-1.今天发现空字符返回值是0.看源码原来如此,阴沟里翻船啊!
- 用正则表达式简单加密(C#为例)
") { List<" }; ") { foreach (char i in key) { keys[counter] = i.ToString(); counte ...
- Linux-SSH远程登陆
SSH是什么 Secure Shell 安全外壳协议 建立在应用层基础上的安全协议 可靠.转为远程登陆会话和其他网络提供安全性的协议 SSH客户端是用于多种平台 服务器安装SSH服务 安装:yum i ...
- python之质数
质数(prime number)又称素数,有无限个 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 示例: num=[]; i=2 for i in range(2,100): j= ...
- 用express框架实现反向代理
目前很多公司开发都是前后台分离开发,于是我用node起了一个服务,用node中的express框架实现了反向代理.(通俗易懂的讲就是我在我的电脑访问不到后台同事的电脑接口,这样做以后就可以在我本地访问 ...
- JZOJ 4272. 【NOIP2015模拟10.28B组】序章-弗兰德的秘密
272. [NOIP2015模拟10.28B组]序章-弗兰德的秘密 (File IO): input:frand.in output:frand.out Time Limits: 1000 ms M ...
- python网络-多任务实现之协程(27)
一.协程 协程,又称微线程,纤程.英文名Coroutine. 协程不是进程,也不是线程,它就是一个函数,一个特殊的函数——可以在某个地方挂起,并且可以重新在挂起处继续运行.所以说,协程与进程.线程相比 ...
- 关于web.xml配置中的<url-pattern>
标签<url-pattern> <url-pattern>是我们用Servlet做Web项目时需要经常配置的标签,例: <servlet><servlet-n ...
- 学习python第四天 列表
模块的导入是使用 import sys#导入模块sysprint(sys.path)#打印环境变量,可能存在的目录print(sys.argv)#打印脚本的名字,相对路径 import os os.s ...
- Android 服务入门
前言:硬着头皮把数据库SQLite看完了,接下来就是android服务了,因为自己本身就是菜鸟,所以呢,也只是做做笔记,技术上的东西就别指望我了. 1.什么是服务呢?举个例子,百度地图,美团外卖,OF ...