-
急啊!求程序!熟悉socket和多线程的高人请进!30
要求,服务器端不停地发送数据给客户端;客户端通过键盘输入的某个命令把服务器端的数据存到本地二进制文件(非文本文件)(最好能自己设置服务器的IP和端口) ,在通过其他某个命令停止上述操作;服务器端可以没有界面,客户端必须有界面;要用多线程实现,不要单线程的
问题补充:
小弟我是刚接触socket,很菜的。还希望高手们能提供下代码啊!
问题补充:
我参照各位大虾的信息,写了一个程序。
服务器连续发送数据给客户端,可客户端还是无法连续将数据写入文件啊。
我的代码在我的博客里
http://mxx123.iteye.com/blog/410109
希望大家能指点一下小弟啊
附件里也是代码。2009年6月17日 11:05
4个答案 按时间排序 按投票排序
-
采纳的答案
这个是我以前学java这部分的时候的一些代码,现在贴出来希望对你有点帮助,稍微改下应该就能满足你的要求了,如下:
client.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.net.*;
import java.io.*;
class Client extends JFrame implements ActionListener,Runnable
{
JLabel label = new JLabel("Please input data:");
JTextField tf = new JTextField(20);
JButton send = new JButton("Send");
JTextArea area = new JTextArea(30,100);
JScrollPane pane = new JScrollPane(area);
Socket socket;
BufferedReader br;
PrintWriter bw;
static String name;
public Client()
{
super(name);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
bw.println("Window");
System.exit(0);
}
});
send.addActionListener(this);
Container c = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(label);panel.add(tf);panel.add(send);
c.add(panel,"North");
c.add(pane);
setSize(600,400);
setVisible(true);
init();
}
void init()
{
try
{
socket = new Socket("127.0.0.1",6666);
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
bw.println(name);
Thread thread = new Thread(this);
thread.start();
}catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
while(true)
{
try
{
String data = br.readLine();
if(data.equals("Server Close"))
{
System.exit(0);
}
JScrollBar jb = pane.getVerticalScrollBar();
jb.setValue(jb.getMaximum());// 拉到最后一行
area.append(data+"\n");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
public void actionPerformed(ActionEvent e)
{
String data = tf.getText();
try
{
bw.println(data);
}catch(Exception a)
{
a.printStackTrace();
}
}
public static void main(String[] args)
{
if(args.length!=1)
{
System.out.println("Usage:java Client xiaowang");
System.exit(0);
}
name = args[0];
new Client();
}
}
server.java
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.event.*;
class Server extends JFrame
{
JTextArea area = new JTextArea();
JScrollPane pane = new JScrollPane(area);
Vector vector = new Vector();
public Server()
{
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
for(int i=0;i<vector.size();i++)
{
try
{
PrintWriter pw = (PrintWriter)vector.get(i);
pw.println("Server Close");
}catch(Exception a){}
}
System.exit(0);
}
});
getContentPane().add(pane);
setSize(300,400);
setVisible(true);
init();
}
void init()
{
try
{
ServerSocket server = new ServerSocket(6666);
while(true)
{
Socket socket = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
vector.add(pw);
Chat c = new Chat(br);
c.start();
}
}catch(Exception e)
{
e.printStackTrace();
}
}
class Chat extends Thread
{
BufferedReader br;
String name;
public Chat(BufferedReader br)
{
this.br = br;
}
public void run()
{
try
{
name = br.readLine();
}catch(Exception a)
{
a.printStackTrace();
}
while(true)
{
try
{
String data = br.readLine();
if(data.equals("Window"))
{
break;
}
for(int i=0;i<vector.size();i++)
{
PrintWriter writer = (PrintWriter)vector.get(i);
writer.println(name+" : "+data);
}
area.append(name+" : "+data+"\n");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
}
public static void main(String[] args)
{
new Server();
}
}2009年6月17日 12:17
-
Java Socket简单聊天和文件传输工具
http://chenkaijie.blog.51cto.com/159108/653032009年6月17日 11:26
-
建议你自己多想想先,可以参考聊天室程序
http://java.chinaitlab.com/net/743578.html2009年6月17日 11:25
相关推荐
《基于SOCKET和多线程的应用程序间通信技术的研究》一文深入探讨了在不同程序之间采用SOCKET和多线程技术进行数据通信的方法。本文将详细解析标题和描述中的核心知识点,包括SOCKET和多线程的基本原理,以及它们在...
在IT领域,网络编程是不可或缺的一部分,而Socket和多线程技术则是构建网络应用程序的核心工具。本示例项目"SOCKET+多线程例子"旨在帮助初学者掌握这两个关键概念,以便于创建高效的网络通信应用。 首先,让我们...
在.NET平台上,SuperSocket以其易于扩展和高度定制化的特性,成为了Socket多线程编程的一个优选方案。 **一、SuperSocket的核心特性** 1. **多线程支持**:SuperSocket采用了多线程模型来处理客户端的连接,确保了...
这个程序的核心在于socket通信和多线程技术,这两者都是网络编程的关键要素。 首先,我们来详细解释一下`socket`。Socket是网络通信的基础,可以理解为两个设备之间的通信端点。在TCP/IP协议族中,socket提供了进程...
1、运用多线程和Socket技术实现Socket Server端侦听多个客户端请求; 2、实现服务器端循环处理客户端不同请求从而实现不同测试要求,并向客户端循环发送数据; 3、实现客户端向服务器端发送不同测试命令,并接收...
本项目“Socket和多线程的聊天室”是一个基于控制台的简单聊天应用程序,允许用户通过命令行进行交互,实现私聊和群聊功能。 首先,让我们深入理解Socket。Socket是网络通信中的接口,可以看作是两台计算机之间的...
在Linux操作系统中,使用Socket和多线程技术可以构建一个简单的聊天室应用。Socket是网络通信的基本接口,它允许不同的进程或计算机之间进行数据交换。而多线程则可以提高程序的并发处理能力,使聊天室能同时处理多...
在计算机网络编程中,Socket是实现进程间通信(IPC)的一种方式,特别是在互联网环境中,它提供了...对这个程序进行深入学习和分析,可以帮助你理解多线程Socket服务端的工作原理,并为构建自己的并发服务器提供基础。
总的来说,这个项目是一个很好的起点,它涵盖了Qt网络编程和多线程的基本概念,对于想学习这两个领域的开发者来说,是一份非常有价值的参考资料。通过实践和理解这个示例,你将能够掌握如何在实际项目中运用Qt的网络...
LINUX下基于socket和多线程的聊天程序设计与实现的群聊客户端关键代码
C#.net同步异步SOCKET通讯和多线程总结 C#.net同步异步SOCKET通讯和多线程总结是指在C#.net环境下实现的同步异步套接字通信和多线程编程的总结。套接字(Socket)是tcp/ip网络协议接口,内部定义了许多的函数和例程...
### Socket和多线程在视频传输中的应用 #### 一、引言 随着计算机网络技术和多媒体技术的迅速发展,视频应用系统(例如视频电话、视频监控等)的应用范围日益广泛。如何有效地在网络上传输视频信息成为了研究的...
在C++编程中,多线程SOCKET收发是一项重要的技术,它允许程序同时处理多个网络连接,提高系统的并发性能。下面将详细讲解这个主题,包括C++中的多线程概念、SOCKET基础以及如何结合两者实现数据的收发。 首先,让...
Java Socket 多线程是网络编程中的一个重要概念,它结合了Java的并发处理能力和Socket通信技术,使得服务器能够同时处理多个客户端的连接请求。在Java中,Socket是用于在网络环境中进行双向通信的类,而多线程则允许...
【标题】"java多线程+Socket+Swing做的局域网聊天程序"涉及的核心知识点主要涵盖Java编程、多线程、网络通信以及图形用户界面设计。以下将详细阐述这些关键概念及其在实现局域网聊天程序中的应用。 **1. Java编程**...
综上所述,"基于socket的多线程聊天程序"项目涵盖了网络编程、多线程、并发处理、错误处理等多个核心知识点,是学习C++网络编程和多线程技术的一个优秀实践案例。通过理解和实现这样的程序,开发者可以深入理解网络...
总之,"socket多线程例程非阻塞模式"是一个实用的编程实例,涵盖了网络通信、多线程以及异步处理的关键技术,对于学习和理解这些概念非常有价值。通过对源代码的分析和实践,开发者能够提升自己的网络编程技能,为...
使用Socket和多线程技术实现远程通信-The use of Socket and multithreading technology to achieve long-range communications
Java 多线程-Socket 编程是指在 Java 语言中使用多线程技术来实现网络编程,特别是使用 Socket 编程来实现客户端和服务器端的通信。在 Java 中,多线程可以使用 Thread 类和 Runnable 接口来实现,而 Socket 编程则...
C#是一种广泛用于构建桌面和Web应用程序的编程语言,它提供了强大的网络编程能力,其中包括使用TCP Socket进行多线程通信。本篇文章将深入探讨C#中基于TCP的Socket多线程通信,包括服务端和客户端的实现。 TCP...