473,714 Members | 5,096 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

How to manage two (different) sockets without using threads?

Hi all.
I'm (re)writing an FTP server application by using asyncore/asynchat
modules.
FTP tipically got two different channels: command and data.
I'm succesfully managing command channel through asynchat framework,
but I'm not sure about how to manage data channel without using a
thread/subprocess.
Is there an optimal to do that?
Can anyone point me in the right direction?

Dec 13 '06 #1
4 2163

Hi, i don't know how to do it with asyncore/asynchat,
but it is possible to handle different sockets in one process by using "select" standard module:

for_reading, for_writing, where_errors =\
select.select( (<sockets list), ( <sockets list), (<sockets list>), 0)

you can find all necessary information in python documentation:
http://www.python.org/doc/2.4/lib/module-select.html
btw: "asyncore" use "select" for socket handling, take a look in asyncore.py
hope it helps
billie wrote:
Hi all.
I'm (re)writing an FTP server application by using asyncore/asynchat
modules.
FTP tipically got two different channels: command and data.
I'm succesfully managing command channel through asynchat framework,
but I'm not sure about how to manage data channel without using a
thread/subprocess.
Is there an optimal to do that?
Can anyone point me in the right direction?

--
Maksim Kasimov
Dec 13 '06 #2
Why are you trying to make this asynchronous? I think part of the point
of ftp using two sockets was to make it multithreaded. If you're going
to make it asynchronous, It's probably going to be easier to do the
"select"ing yourself, instead of relying on asyncore or asynchat.
Unless you have an insanely fast connection and/or really small files
on the server, using asynchronous socket handling is going to stop up
the server b/c select won't check the other sockets until the current
one is done with whatever it's doing.

billie wrote:
Hi all.
I'm (re)writing an FTP server application by using asyncore/asynchat
modules.
FTP tipically got two different channels: command and data.
I'm succesfully managing command channel through asynchat framework,
but I'm not sure about how to manage data channel without using a
thread/subprocess.
Is there an optimal to do that?
Can anyone point me in the right direction?
Dec 13 '06 #3
billie wrote:
I'm (re)writing an FTP server application by using
asyncore/asynchat modules.
FTP tipically got two different channels: command and data.
I'm succesfully managing command channel through asynchat
framework, but I'm not sure about how to manage data channel
without using a thread/subprocess.
Is there an optimal to do that?
I don't know much about asynchat, but I think it's been done for
this.

But if you want to save pain, try the Twisted framework.

Regards,
Björn

--
BOFH excuse #2:

solar flares

Dec 13 '06 #4
billie wrote:
I'm succesfully managing command channel through asynchat framework,
but I'm not sure about how to manage data channel without using a
thread/subprocess.
use a separate dispatcher instance for the data transfer. see the
ftp_handle_pasv _response method and async_ftp_downl oad class in this
article for a start:

http://effbot.org/zone/asyncore-ftp-client.htm

</F>

Dec 13 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
3891
by: Tero Saarni | last post by:
Hi, I have several threads communicating with each other using events stored in Queues. Threads block on Queue.get() until somebody publishes an event in thread's event queue. I need to add support for sockets to the system. Thread needs to unblock when: - there is socket ready to be read, or
4
7543
by: Julia Goolia | last post by:
hello, i read that it is bad to use threads with tkinter. so my question is how does one create a gui program with sockets? at one point you have to call mainloop() which does not return. then you are not free to do stuff with the sockets. what's up with that? thanks so much for your time!
0
1447
by: Gonçalo Rodrigues | last post by:
Hi, I have a problem with threads and sockets. I'll try to describe the problem in words with pseudo-code. I've been working on a few classes to make it easier to work with threads. This framework, let us call it that, consists in two parts. The first part is just a basic thread class deriving from threading.Thread with a few extra functionality that makes it easier for a thread to spawn a new thread and "father it". Each of its
4
4434
by: Mike Dole | last post by:
I'm working on a client - server application based on the 'How to Sockets Server and How to Sockets Client' code from the Visual Basic ..NET Resource Kit. Since I want to be able to send 'big strings' instead of 'one liners' I check the streams for terminators. I'm having problems with the connection, I've been looking and debugging for 2 weeks now (debugging with an emulator is terribly slow..) but I'm not getting it...
8
1808
by: Manfred Braun | last post by:
Hello All! I am writing a management application, which has to access remote machines registry via System.Diagnostics.EventLog.CreateEventSource . For each machine, I connect to, I create a DirectoryEntry and connect to that machine specifying credentials. That's becauase the running user does not has the right permissions . The application is written in C# and the action taken is done with threads from the threadpool.
2
2354
by: Stressed Out Developer | last post by:
We have an application that has a 200 count loop that does the following: ' Each time thru the loop we pass the next IP Address is a range (aka 192.168.4.50 thru 192.168.4.254) Try If mUIO_Threads(i) Is Nothing Then mUIO_Threads(i) = New System.Threading.Thread(AddressOf mUIO_DAQ(i).InitDAQ) mUIO_Threads(i).Name = mUIO_DAQ(i).UIO_IPAddr mUIO_Threads(i).IsBackground = False
4
3820
by: taskswap | last post by:
I have a legacy application written in C that I'm trying to convert to C#. It processes a very large amount of data from many clients (actually, upstream servers - this is a mux) simultaneously. I've read through what must be dozens of ways to do socket communication in C#, and it seems they all devolve into three basic options - Socket.Select, IOCP through a native interface, and Asynchronous callbacks. I'm fine using Asynchronous...
6
2382
by: geoffbache | last post by:
Hi all, I have a Python program (on UNIX) whose main job is to listen on a socket, for which I use the SocketServer module. However, I would also like it to be sensitive to signals received, which it isn't if it's listening on the socket. ("signals can only be received between atomic actions of the python interpreter", presumably - and control will not return to Python unless something appears on the socket). Does anyone have a tip of a...
0
2959
by: Jean-Paul Calderone | last post by:
On Sat, 23 Aug 2008 02:25:17 +0800, Leo Jay <python.leojay@gmail.comwrote: No - it's just what I said. create_socket creates one socket and passes it to read_socket and write_socket. read_socket calls connect on the socket it is passed. write_socket calls accept on the socket it is passed. So a single socket has connect and accept called on it. Now, main does call create_socket twice, so this does happen to two sockets, but it's...
0
8712
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9316
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
9077
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
7954
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5959
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4466
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4729
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3160
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
2113
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.