下面是原代码,比较简单的功能,提供个参考和入门学习。
1服务器侦听代码:
package test;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ThreadServer {
final static int portNo=4444;
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
serverSocket=new ServerSocket(portNo);
System.out.println("The Server is start:"+serverSocket);
while(true){
Socket socket=serverSocket.accept();
new ServerThreadCode(socket);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2服务器逻辑实现代码
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThreadCode extends Thread {
private Socket socket;
private BufferedReader sin;
private PrintWriter pw;
public ServerThreadCode() {
}
public ServerThreadCode(Socket s) {
this.socket = s;
try {
sin = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
socket.getOutputStream())), true);
this.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void run() {
try {
for (;;) {
String str = sin.readLine();
if("byebye".equalsIgnoreCase(str)){
break;
}
System.out.println("In Server the info"+str);
pw.println(str);
}
System.out.println("closing the server socket!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
System.out.println("close the server socket and the io.");
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3客户端代码
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class ClientThreadCode extends Thread {
private Socket socket;
private static int cnt=0;
private int clientId=cnt++;
private BufferedReader in;
private PrintWriter out;
public ClientThreadCode(InetAddress inet){
try {
socket=new Socket(inet,4444);
} catch (IOException e) {
e.printStackTrace();
}
try {
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
this.start();
} catch (IOException e) {
e.printStackTrace();
}
}
public void run(){
String str;
try {
out.println("Hello Server,My Id is:"+clientId);
str = in.readLine();
System.out.println(str);
out.println("byebye");
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4调用客户端的代码
package test;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class ThreadClient {
public static void main(String[] args) {
int threadNo=0;
InetAddress addr;
try {
addr = InetAddress.getByName("localhost");
for(threadNo=0;threadNo<3;threadNo++){
new ClientThreadCode(addr);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
总结来说,这个学习笔记提供了一个使用Java Socket编程实现多线程服务器的示例,它演示了如何利用ExecutorService创建线程池来处理并发连接,是理解Java并发编程和网络通信的一个实用案例。虽然这是一个学习笔记,但...
这份"Socket网络编程学习笔记.doc"不仅介绍了理论知识,还可能包含示例代码和练习,帮助读者深入理解和掌握Socket网络编程,从而能够开发出自己的网络应用程序。通过深入学习,初学者将能逐步成长为熟练的网络程序员...
以下是对Socket学习笔记的详细解释: 1. **Socket构造方法**: - `Socket()`:创建一个未连接的Socket对象。 - `Socket(InetAddress address, int port)`:创建一个Socket并连接到指定的IP地址和端口。 - `...
总的来说,这个项目为我们提供了一个学习和实践Socket编程,尤其是多线程Socket通信的绝佳机会。通过分析和理解代码,我们可以掌握如何构建一个简单的网络聊天应用,这对于深入理解网络编程和并发处理至关重要。同时...
在本文中,我们将深入探讨"socket学习笔记"中的关键概念和技术细节。 首先,让我们理解什么是Socket。Socket是应用层与传输层之间的一个接口(API),它允许程序通过网络进行数据交换。在TCP/IP协议族中,Socket...
本资源包含了Socket学习笔记和课件,适合对网络编程感兴趣的初学者或希望深入理解Socket技术的学习者。 首先,我们需要了解Socket的基本概念。Socket是操作系统提供的一个接口,它允许应用程序通过这个接口发送和...
本篇学习笔记将深入探讨如何结合Socket与线程池来提升程序的运行效率。 一、Socket基础 Socket,也称为套接字,是网络编程中的一个重要概念,它是进程间通信(IPC)的一种方式,特别是在网络环境中。Socket提供了一...
在本文中,我们将关注如何使用线程池来优化Socket通信中的多线程处理,以提高程序性能。 在传统的Socket编程中,每当有新的客户端请求连接时,服务端通常会创建一个新的线程来处理该连接。虽然这种方法直观易懂,但...
在这个“Java客户端服务器程序学习笔记”中,我们将深入探讨这一主题,包括如何设计、实现和交互这两个关键组件。 首先,客户端是用户与系统进行交互的部分,它发送请求到服务器并接收响应。服务器端则处理这些请求...
- 多线程和多进程编程:在Socket编程中,如何利用多线程或多进程实现并发服务。 - 常见问题:例如端口复用、半关闭状态、TIME_WAIT状态等,并给出解决方案。 通过对这些笔记的学习,开发者可以掌握Linux环境下进行...
在Android平台上实现手机...学习并理解这些代码,开发者将能够构建自己的Android应用,实现在WiFi环境下与电脑的Socket通信。在实际项目中,可以根据需求进行扩展,比如添加多线程处理、数据编码解码、错误处理等功能。
Socket网络编程是构建网络应用程序的基础,它允许两个设备(如计算机)通过网络交换数据。本文主要探讨面向连接的TCP Socket编程,这是一种可靠的、基于连接的通信协议。 在TCP Socket编程中,服务端需要进行一系列...
2. 多线程:Java内置了对多线程的支持,学习如何创建和管理线程,理解同步和互斥的概念,有助于编写能够充分利用多核处理器性能的应用程序。 3. 网络编程:Java提供了丰富的API来处理网络通信,如Socket编程,可以...
一、程序功能可以实现多台电脑互通消息,且利用多线程实现一台服务器与多台客户端的连续对话二、关键代码块主要模块socket与threading1.客户端实现:socket.connect(),socket.send(),socket.recv()2.服务器实现:...
7. 多线程:Java内置了对多线程的支持,通过Thread类或实现Runnable接口创建线程。线程同步机制包括synchronized关键字、wait()、notify()和notifyAll()方法,以及Lock接口和相关的实现类。 8. 数据库操作:Java ...