Mark Fink wrote: > The cast to Integer for the port does not work either: > > D:\AUT_TEST\workspace\JyFIT>jython fit/JyFitServer2.py "" 1234 23 > ['fit/JyFitServer2.py', '', '1234', '23'] > > Traceback (innermost last): > File "fit/JyFitServer2.py", line 146, in ? > File "fit/JyFitServer2.py", line 31, in run > File "fit/JyFitServer2.py", line 96, in establishConnection > File "D:\AUT_TEST\Jython21\Lib\socket.py", line 135, in connect > TypeError: java.net.Socket(): 2nd arg can't be coerced to int > > This is the code section of my server class (I cut this from a Python > example): > def establishConnection(self): > self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) > self.socket.connect((self.host, self.port)) > Do I have to use explicit typecasting? How can this be achieved? >
This should work if you give correct arguments. For example: Jython 2.1 on java1.4.2_06 (JIT: null) Type "copyright", "credits" or "license" for more information. >>> import socket >>> s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) >>> s.connect(('www.google.com', 80)) >>> s.close() It would be helpful to know what self.host and self.port are. Put print type(self.host), repr(self.host) print type(self.port), repr(self.port) in establishConnection() to print out the values you are using. If host.port is the command line argument it is a string and you need to convert it to int with the int() function. >>> s.connect(('www.google.com', '80')) Traceback (innermost last): File "<console>", line 1, in ? File "C:\Downloads\Java\jython-2.1\Lib\socket.py", line 135, in connect TypeError: java.net.Socket(): 1st arg can't be coerced to java.net.InetAddress or String Note it complains about the first arg; this may well be your error. In general Python does not coerce argumentt types for you. Jython will translate between Java and Python types but it won't go as far as converting a String to an int. Kent -- http://mail.python.org/mailman/listinfo/python-list