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 ...
随机推荐
- Careercup - Google面试题 - 5732809947742208
2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...
- Query classification; understanding user intent
http://vervedevelopments.com/Blog/query-classification-understanding-user-intent.html What exactly i ...
- [algorithm]求最长公共子序列问题
最直白方法:时间复杂度是O(n3), 空间复杂度是常数 reference:http://blog.csdn.net/monkeyandy/article/details/7957263 /** ** ...
- Virtualbox虚拟机设置不完全笔记
先说说我想实现的东西,我想在虚拟机安装各种开发环境,我个人在学习Node.然后我装了一个Ubuntu Server,所以我又想共享一个windows下的文件夹,这样可以让我在windows下开发,在L ...
- Netty 中文教程 Hello World !详解
1.HelloServer 详解 HelloServer首先定义了一个静态终态的变量---服务端绑定端口7878.至于为什么是这个7878端口,纯粹是笔者个人喜好.大家可以按照自己的习惯选择端口.当然 ...
- c++ 枚举 在函数中的应用
#include <iostream> using namespace std; enum RespErrNo { SUCCESS = , INVALID_URL = , INVALID_ ...
- 【BestCoder】【Round#29】
T1 啊……a^b 与 c^d比较大小,我们可以两边取对数,转化成 log(a^b)=b*log(a) 和d*log(c) 这样就能直接算了……然后稍微搞一下精度什么的就A了=.= //BC #29 ...
- Unity3D开发之“获取IOS设备所在的国家代码"
原地址:http://dong2008hong.blog.163.com/blog/static/469688272014021025578/ 在前一段时间游戏开发中需要实现获取IOS设备所在的国家代 ...
- CC150 上面重要的题目总结
第一章 : 全部重要 (1.6, 1.7 Leetcode上有). 1.5 面A碰到 (string compression) 1.7面Z碰到 (set 0) 1.8面Bigfish碰到 (strin ...
- 前台将勾选的多个属性放到一个value里面,是一个字符串,传到后台
jq function changeStreet(a){ var valk=$(a).html(); $(a).parents(".select_box").children(&q ...