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 ...
随机推荐
- Regex.Match 方法
Regex.Match 方法 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个 Match 对象返回. 重载列表 (1) 在指定的输入字符串中搜索 Regex 构造函数中指定的正则 ...
- Careercup - Google面试题 - 4716965625069568
2014-05-06 00:17 题目链接 原题: Given a -D matrix represents the room, obstacle and guard like the followi ...
- .NET操作JSON
http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html JSON文件读入到内存中就是字符串,.NET操作JSON就是生成与 ...
- 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
// ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "stdafx.h ...
- 并查集 基础 AC 2014-01-14 13:37 202人阅读 评论(0) 收藏
题目地址:http://haut.openjudge.cn/20131112/6/ 求编号最多的组 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 63353kB 描述 相邻两个 ...
- tangent space /handness
normal tangent bitangent 三者互相垂直. 组成一个tangent space 表示一个点 对于原本位置的偏移(扰动) 考虑到这是为了 normalmap做出虚假的normal来 ...
- ios开发之网络数据的下载与上传
要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection 针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...
- Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口
原地址:http://www.cnblogs.com/qingjoin/p/3638915.html Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创 ...
- POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...
- HDU 3461 Code Lock(并查集,合并区间,思路太难想了啊)
完全没思路,题目也没看懂,直接参考大牛们的解法. http://www.myexception.cn/program/723825.html 题意是说有N个字母组成的密码锁,如[wersdfj],每一 ...