刚刚参加工作不久、算是一个菜鸟吧、、下面是自己写的一个基于socket的聊天程序、多多提意见和建议、、
client、单词拼错了、大家不就用提醒了、
server、服务器端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
public class Server {
public static Map map=new HashMap();
public static Integer msgCount=0;
public void doService() throws Exception {
ServerSocket ss = new ServerSocket(8088);
System.out.println("服务器已经启动.....");
while (true) {
Socket socket = ss.accept();
System.out.println("一个客户端连接了...");
try {
new ReadThead(socket).start();
new WriteThead(socket).start();
} catch (Exception e) {
// TODO: handle exception
}
}
}
public static void main(String[] args) throws Exception {
new Server().doService();
}
}
class ReadThead extends Thread {
private Socket socket;
public ReadThead(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br = null;
String ipString = null;
try {
synchronized (socket) {
br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
ipString = socket.getLocalAddress().getHostAddress();
}
while (true) {
String msg = "";
if ((msg = br.readLine()) != null) {
msg = ipString + "说:" + msg;
System.out.println(msg);
synchronized (Server.map) {
Server.map.put(Server.msgCount++, msg);
}
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
class WriteThead extends Thread {
private Integer msgCount=0;
private Socket socket;
public WriteThead(Socket socket) {
this.socket = socket;
}
public void run() {
PrintWriter pw = null;
OutputStream outputStream = null;
try {
synchronized (socket) {
outputStream = socket.getOutputStream();
pw = new PrintWriter(outputStream);
}
String msg = null;
while (true) {
synchronized (Server.map) {
if (msgCount < Server.map.size()) {
msg = Server.map.get(msgCount).toString();
pw.println(msg);
pw.flush();
outputStream.flush();
msgCount++;
}
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
client
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class Clinet {
public static void main(String [] args)throws Exception{
Socket socket=new Socket("192.168.0.125",8088);
new ReadThread(socket).start();
new WriteThread(socket).start();
System.out.println("客户端已经启动");
}
}
class ReadThread extends Thread{
private Socket socket;
public ReadThread(Socket socket){
this.socket= socket;
}
public void run(){
BufferedReader br = null;
String ipString=null;
try {
synchronized (socket) {
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ipString=socket.getLocalAddress().getHostAddress();
}
while(true){
String msg="";
if((msg=br.readLine())!=null){
System.out.println(msg);
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
class WriteThread extends Thread{
private Socket socket;
public WriteThread(Socket socket){
this.socket= socket;
}
public void run(){
PrintWriter pw=null;
OutputStream outputStream=null;
try {
synchronized (socket) {
outputStream=socket.getOutputStream();
pw =new PrintWriter(outputStream);
}
String msg=null;
while(true){
Scanner scanner=new Scanner(System.in);
msg=scanner.next();
pw.println(msg);
pw.flush();
outputStream.flush();
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
分享到:
相关推荐
这是小例子是我自学Socket编程的时候写的,没有太大的扩展性,因为里面用的分隔符我一直没有想到太好的,所以用,号分割了,聊天的时候不能发,号 要么会出错,大家可以下载之后自己改,我觉得还算能用!很久没有发表...
在这个“Socket编程简单例子”中,我们将深入理解如何在Android客户端与服务器之间建立连接,发送消息并接收回应。 首先,我们需要了解Socket的基本原理。Socket是网络通信的一种接口,它为两台机器上的应用程序...
Socket编程是计算机网络通信中的重要概念,主要用于实现进程间的网络通信。在本示例中,我们探讨的是如何使用Socket进行程序间的交互。Socket可以被看作是两台计算机之间的通信端点,允许它们通过网络交换数据。下面...
这个“最基本的C# Socket编程小例子”可能会包含一个简单的客户端和服务器端程序,分别实现上述步骤。通过运行这两个程序,初学者可以在本地环境中体验Socket通信的过程。 通过深入学习和实践,开发者可以进一步...
在实际开发中,Socket编程常用于实现聊天程序、文件传输、分布式系统等。通过这些经典的源码例子,开发者可以学习如何处理连接建立、数据打包与解析、异常处理以及多线程或多进程下的并发连接等问题。 为了深入理解...
Socket网络编程是计算机科学中的一个重要领域,特别是在分布式系统和互联网应用程序中。..."Socket网络编程例子程序"是一个宝贵的教育资源,对于想要深入学习这一领域的开发者来说,它提供了实践和探索的平台。
- "socket应用小例程.rar"和"Socket开发资料.rar"可能包含了各种Socket编程的实用案例,如文件传输、聊天室等。 - "Socket聊天室源代码.rar"提供了使用Socket实现的多人在线聊天室的源码,展示了如何实现用户注册...
Java的Socket编程是网络编程的基础,它允许两个网络应用程序之间建立通信链接,进行数据传输。在Java中,Socket是java.net包的一部分,提供了客户端/服务器通信的基本接口。本篇文章将深入探讨Socket编程的基础知识...
在这个“最基本的Socket编程例子”中,我们将深入理解Socket的基本概念、工作原理以及如何在实际编程中应用。 Socket,通常被称为套接字,是操作系统提供的一个接口,用于网络上的进程间通信。在网络编程中,Socket...
在IT行业中,服务程序Socket编程是一种常见的网络通信技术,它允许不同计算机间的程序进行数据交换。Socket编程在服务器端和客户端之间建立连接,为应用程序提供低级别的、原始的TCP/IP通信方式。本示例中,结合了...
在IT行业中,网络编程是构建分布式系统和网络应用的基础,而C++ Socket编程则是实现这一目标的重要工具。Socket是操作系统提供的接口,允许程序通过网络进行通信。本实例提供了C++实现的服务端(server.cpp)和客户端...
总之,这个C#的Socket编程实例展示了如何构建一个简单的聊天应用程序,涉及了Socket的基本操作,包括连接、监听、发送和接收数据。通过理解和实践这个示例,开发者可以深入理解网络编程的基础,并为开发更复杂的网络...
在`Socket编程例子_MFC`这个压缩包中,可能包含了一个简单的C/S程序示例,展示了如何在MFC工程中集成Socket通信。可能包含客户端的`.cpp`和`.h`文件,以及服务器端的相应文件。代码中可能使用了`CSocket`类及其派生...
总结来说,"NIO socket编程小例子 加法服务器"是一个很好的学习NIO网络编程的起点。通过这个实例,我们可以了解NIO Channel、Buffer和Selector的基本用法,以及如何构建一个简单的网络通信应用。对于任何想要提升...
我们上培训时做的一个小例子,用Socket和线程编写的一个局域网聊天的小例子。需要了解线程的知识!是个控制台程序……演示需要在CMD下运行,同时运行两个就好了。关键在于学习代码~嘿嘿
附件是一个简单的 Python socket 编程的例子,包括一个服务器端和一个客户端。 附件代码在实际使用中可能需要进行错误处理和异常管理的增强,以确保程序的健壮性。此外,服务器端代码中的 while True 循环会无限期...
压缩包中的源代码可能包含如简单的TCP echo服务端和客户端、文件传输、聊天室等例子,这些案例可以帮助理解Socket编程的实际应用。 总的来说,Socket编程是网络编程的基础,通过学习和实践这些经典例子,你可以...
在Windows环境下,通常使用Winsock库来实现Socket编程。Winsock库为开发者提供了丰富的API函数,如`WSAStartup`、`socket`、`bind`、`listen`、`accept`、`connect`、`send`和`recv`等,用于创建、配置和管理Socket...