socket编程---一个简单例子
服务器端代码(单线程):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket; public class TalkServer { public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(4700);
} catch (IOException e) {
System.out.println("Can not listen 4700.");
}
Socket socket = null;
try {
socket = server.accept();
} catch (IOException e) {
e.printStackTrace();
} String line;
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:" + reader.readLine());
line = sysin.readLine();
while (!line.equals("bye")) {
printWriter.print(line);
printWriter.flush();
System.out.println("Server:" + line);
System.out.println("Client:" + reader.readLine());
line = sysin.readLine();
}
reader.close();
sysin.close();
printWriter.close();
socket.close();
server.close(); } catch (IOException e) {
e.printStackTrace();
} }
}
客户端代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket; public class TalkClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 4700);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
String readline = sysin.readLine();
while (!readline.equals("bye")) {
out.println(readline);
out.flush();
System.out.println("Client:" + readline);
System.out.println("Server:" + in.readLine());
readline = sysin.readLine();
}
in.close();
out.close();
sysin.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器端代码(多线程):
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner; public class MultiEchoServer {
private static ServerSocket serverSocket;
private static final int PORT = 12345; public static void main(String[] args) throws IOException {
try {
serverSocket = new ServerSocket(PORT);
} catch (IOException e) {
System.out.println("Unable connect to the port");
System.exit(1);
}
do {
Socket client = serverSocket.accept();
System.out.println("New client accept...");
ClientHandler clientHandler = new ClientHandler(client);
clientHandler.start();
} while (true);
}
} class ClientHandler extends Thread {
private Socket client;
private Scanner input;
private PrintWriter output; public ClientHandler(Socket client) {
this.client = client;
try {
input = new Scanner(client.getInputStream());
output = new PrintWriter(client.getOutputStream(),true);
} catch (IOException e) {
e.printStackTrace();
}
} @Override
public void run() {
String receive = "";
do {
receive = input.nextLine();
System.out.println("Server receive message:" + receive);
output.println("Echo:" + receive);
} while (!receive.equalsIgnoreCase("q"));
try {
if (client != null) {
System.out.println("Closing connection...");
client.close();
}
} catch (IOException e) {
System.out.println("Unable to close connection...");
}
}
}
客户端代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner; public class MultiEchoClient {
private static InetAddress host;
private static final int PORT = 12345; public static void main(String[] args) {
try {
host = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
System.out.println("Host id not found!");
System.exit(1);
}
SenderMessages();
} public static void SenderMessages() {
Socket socket = null;
try {
socket = new Socket(host, PORT);
Scanner input = new Scanner(socket.getInputStream());
PrintWriter outpout = new PrintWriter(socket.getOutputStream(),true);
Scanner userInput = new Scanner(System.in);
String message, response;
do {
System.out.println("Enter Message:");
message = userInput.nextLine();
outpout.println(message);
response = input.nextLine();
System.out.println("Server " + response);
} while (!message.equalsIgnoreCase("q"));
input.close();
userInput.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
System.out.println("Closing connetion...");
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }
socket编程---一个简单例子的更多相关文章
- socket编程——一个简单的例子
从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server client ++++ ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- socket编程——一个简单的样例
从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server client ++ ...
- 用socket.io实现websocket的一个简单例子
socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...
- socket编程,简单多线程服务端测试程序
socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.acce ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- (转)Java中使用正则表达式的一个简单例子及常用正则分享
转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...
- C语言多线程的一个简单例子
多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...
随机推荐
- android 设置半透明
对于Button和ImageButton 还有一些View 设置半透明或者透明都是通过 android:background="#b0000000" 这是就是半透明 android ...
- .Xresources 配置文件
安装rxvt-unicode-256color,如果不是这个版本的话VIM配色会显示不正常. ~/.Xresources配置文件如下 !urxvt color scheme: URxvt*backgr ...
- [转载+原创]Emgu CV on C# (四) —— Emgu CV on 全局固定阈值二值化
重点介绍了全局二值化原理及数学实现,并利用emgucv方法编程实现. 一.理论概述(转载,如果懂图像处理,可以略过,仅用作科普,或者写文章凑字数) 1.概述 图像二值化是图像处理中的一项基本技术,也 ...
- Flv 视频格式(转)
最近要用到flv,整理了一些flv格式的资料,供参考. flv文件主要由两部分组成:header和body. 1.header header部分记录了flv的类型.版本等信息,是flv的开头,一般都差 ...
- Hadoop集群中pig工具的安装过程记录
在Hadoop环境中安装了pig工具,安装过程中碰到了一些问题,在此做一下记录: 主要安装流程参考:http://www.cnblogs.com/yanghuahui/p/3768270.html ...
- [转载]MongoDB 标准连接字符串
MongoDB 标准连接字符串 mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[data ...
- 01-03-03【Nhibernate (版本3.3.1.4000) 出入江湖】cascade的测试
相关文章: http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html注意上面是hibernate,不是Nhibernate,这解释是 ...
- 仪表盘 hostmap 新玩法让运维工作越玩越 high
Cloud Insight 第13次新品发布会现在开始,首先非常感谢大家前来看我们的新功能发布会,下面我先给大家介绍一下新功能,之后有什么问题大家尽管问
- [SQL Server系] -- 约束
什么是约束? 约束(Constraint)是SQL Server中提供的 自动保存数据库完整性 的一种方法,定义了可输入表或表的列中的数据限制条件. SQL Server中共有5中约束 PRIMARY ...
- JDK与JRE
dos命令行中常见的命令: 1.dir:列出当前目录下的文件以及文件夹 2.md:创建目录(即文件夹) |-----C:\>md kkk(在C盘下创建了一个名为kkk的文件夹) 3.rd:删除目 ...