服务器端代码(单线程):

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编程---一个简单例子的更多相关文章

  1. socket编程——一个简单的例子

    从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client ++++ ...

  2. [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

    以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...

  3. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  4. socket编程——一个简单的样例

    从一个简单的使用TCP样例開始socket编程,其基本过程例如以下: server                                                  client ++ ...

  5. 用socket.io实现websocket的一个简单例子

    socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...

  6. socket编程,简单多线程服务端测试程序

    socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.acce ...

  7. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  8. (转)Java中使用正则表达式的一个简单例子及常用正则分享

    转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...

  9. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...

随机推荐

  1. 修复jquery.treeview的增加子节点的方法的bug

    1.修复理由 在一个android项目中用到了treeview控件(本来自己通过android的原生api实现了一个http://www.cnblogs.com/Mr-Nobody/p/3527688 ...

  2. HTML+CSS入门

    <strong>加粗</strong> <em>斜体</em> <p>段落</p> <span>设置单独样式< ...

  3. 1070: [SCOI2007]修车 - BZOJ

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  4. windows下编译Libevent

    下载最新的libevent,目前是 libevent-2.0.21-stable.tar.gz 修改“D:\libevent-2.0.21-stable\event_iocp.c”.“D:\libev ...

  5. MyEclipse 简单快捷键

    1) Ctrl+/  注释当前行,再按则取消注释 2) Ctrl+M切换窗口的大小 3) Ctrl+Shift+O作用是缺少的Import语句被加入,多余的Import语句被删除. 4)Alt+/ 代 ...

  6. model对象之setter方法使用,解决去除空格和将数字转成字符串展示方法

    1.系统中手机号注册的时候,不能含有前后空格.在model对象中过滤~! private String mobile; public String getMobile() { return mobil ...

  7. DOM对象和JQuery对象的区别

    DOM对象和JQuery对象的区别 jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DO ...

  8. Restore IP Addresses

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  9. 暑假集训单切赛第一场 UVA 1737 Mnemonics and Palindromes 3

    题意:求由a,b,c三个字母组成的长度为n的字符串,其任意连续的至少长度大于等于2的子字符串都不是回文,问这个字符串有多少种?并字典序输出 如果所有种类的字符串总长度大于100000个字符,就输出TO ...

  10. JavaScript执行上下文

    变量声明.函数声明为何会提升?js执行时是如何查找变量的?JavaScript中最基本的部分——执行上下文(execution context) 什么是执行上下文? 当JavaScript代码运行,执 ...