473,387 Members | 1,899 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

mulithreaded server

import socket
import sys
import thread

p=1
PORT=11000
BUFSIZE=1024

def getData(cSocket):
global stdoutlock,cSocketlock
while True:
cSocketlock.acquire()
data=cSocket.recv(BUFSIZE)
if data=='q':
data='client exited'
cSocket.close()
p=0
cSocketlock.release()
stdoutlock.acquire()
stdout.write(data)
stdoutlock.release()

def sendData(cSocket):
global stdoutlock,cSocketlock
while True:
stdoutlock.acquire()
data=raw_input('>>')
cSocketlock.acquire_lock()
if data=='q':
stdout.write('server exited')
stdout.release()
p=0
cSocket.close()
sSocket.send(data)
sSocketlock.release()
stdout=sys.stdout
host=''
sSocket=socket.socket(socket.AF_INET,socket.SOCK_S TREAM)
sSocket.bind((host,PORT,))
sSocket.listen(1)
#sSocketlock=thread.allocate_lock()
stdoutlock=thread.allocate_lock()
print 'waiting for connection'
cSocket,addr=sSocket.accept()
print 'connection from',addr
cSocketlock=thread.allocate_lock()
thread.start_new_thread(sendData,(cSocket,))
thread.start_new_thread(getData,(cSocket,))
if p==0:
sSocket.close()

In the above program, why there is an unhandeled exception ???
Mar 11 '08 #1
1 977
asit <li*****@gmail.comwrote:
>
In the above program, why there is an unhandeled exception ???
Probably because the code as you posted it has at least a half-dozen
mistakes.
>import socket
import sys
import thread

p=1
PORT=11000
BUFSIZE=1024

def getData(cSocket):
global stdoutlock,cSocketlock
while True:
cSocketlock.acquire()
data=cSocket.recv(BUFSIZE)
if data=='q':
data='client exited'
cSocket.close()
p=0
cSocketlock.release()
stdoutlock.acquire()
stdout.write(data)
stdoutlock.release()
You do not need the "global" statement there, since you are not changing
either stdoutlock or cSocketlock. However, you ARE setting "p", so you
need a "global p". Otherwise, you are simply creating a variable called
"p" that is local to the function, and which disappears when the function
returns.

Calling a global variable "p" is a very bad practice, by the way.
>def sendData(cSocket):
global stdoutlock,cSocketlock
while True:
stdoutlock.acquire()
data=raw_input('>>')
cSocketlock.acquire_lock()
if data=='q':
stdout.write('server exited')
stdout.release()
p=0
cSocket.close()
sSocket.send(data)
sSocketlock.release()
Same comments. You do not need the "global" statement you have, but you do
need "global p" if you want to change the global version of "p". Further,
as Jean-Paul pointed out and you rather rudely ignored, there is no
variable called "sSocketlock", because you commented it out.

Next, "stdout.release()" will fail. "stdout" does not have a release
function. You meant "stdoutlock.release()".

Next, you release sSocketlock, but you never acquired it. And if data does
not equal "q", you repeatedly acquire stdoutlock, but you never release it.

Fix these problems, and then see if you can ask for help in a more thorough
fashion.
--
Tim Roberts, ti**@probo.com
Providenza & Boekelheide, Inc.
Mar 13 '08 #2

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

Similar topics

2
by: Phil | last post by:
I am using a Pascal like language (Wealth-Lab) on W2K and call this server: class HelloWorld: _reg_clsid_ = "{4E797C6A-5969-402F-8101-9C95453CF8F6}" _reg_desc_ = "Python Test COM Server"...
6
by: Nathan Sokalski | last post by:
I want to set up SQL Server on Windows XP Pro so that I can use the database capabilities of ASP and IIS. I am probably using some incorrect settings, but I am not sure what they are. Here is what...
2
by: Ken Lindner | last post by:
I have a need to become familiar with SQL Server 2000 for work. Needless to say I am new to SQL Server any version, but not IT in general. My employer has provided me with the SQL Server 2000...
0
by: Philip Trim | last post by:
General Brief: 3 SQL Servers as MS SQL Server 2000 Standard Edition with Service Pack 3 All using FTP for snapshots All Servers are both Publishers and Distributors. Server A has the correct...
5
by: Grim Reaper | last post by:
My work let me put SQL Server 7.0 Enterprise Edition on my laptop. I have never setup a server from the beginning, so I am a little new at creating server groups. Alright, I am trying to create...
2
by: Mike | last post by:
Hi, I am strugling with a simple problem which I can't seem to resolve. I have an asp.net page which contains a server-control (flytreeview, which is a kind of a tree to be exact). The tree is...
2
by: Jobs | last post by:
Download the JAVA , .NET and SQL Server interview with answers Download the JAVA , .NET and SQL Server interview sheet and rate yourself. This will help you judge yourself are you really worth of...
14
by: Developer | last post by:
Hello All, i have recently installed VS2005 and was trying to install SQL sever 2000. I have Win XP' SP2. But when I tried installing, it only installed client tools and not the database. Can...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
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,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

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.