Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10357
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-16 22:59
文章分类
文章存档

2015年(2)

我的朋友
最近访客

分类: Python/Ruby

2015-05-23 14:10:14

  目的主机的IP地址是目的地址的一部分。通过在分组中包含目的地的IP地址,因特网中的路由器将能够通过因特网将分组选路到目的主机。但是因为一台主机可能运行多个网络应用进程,每一个进程具有一个或者多个的套接字(socket),所以在目的主机指定特定的套接字是必要的。当生成一个套接字时。就为其分配一个端口号(port number)的标识符。因此,分组的目的地址也包括该套接字的端口号。所以,发送进程等为分组附上的目的地址是由目的主机的IP地址和目的套接字的端口号组成的,因此我们将看到,发送方的源地址也是由源主机的IP地址和源套接字的端口号组成的,该源地址也要附在分组上。然而,附加源地址通常不是UDP完成,而是操作系统的底层自动完成的。
  假设我们将实现如下的简单客户-服务器应用程序来演示UDP-TCP的套接字编程(Python实现)
1.客户从键盘读取一行字符并将数据发送给服务器。
2.服务器接收数据并且转换字符到大写。
3.服务器将修改的数据发送给客户。
4.客户接收数据并在其监视器上显示出来。

UDPClient.py

点击(此处)折叠或打开

  1. from socket import *
  2. serverName = '183.220.109.66'
  3. serverPort = 12000
  4. clientSocket = socket(AF_INET, SOCK_DGRAM)
  5. message = raw_input( 'Input lowervase sentence:' )
  6. clientSocket.sendto(message,(serverName,serverPort))
  7. modifiedMessage,serverAddress = clientSocket.recvfrom(2048)
  8. print modifiedMessage
  9. clientSocket.close()
UDPServer.py

点击(此处)折叠或打开

  1. from socket import *
  2. serverPort = 12000
  3. clientSocket = socket(AF_INET, SOCK_DGRAM)
  4. serverSocket.bind(('',serverPort))
  5. print "The server is ready to receive"
  6. while True:
  7.     message,clientAddress=serverSocket.recfrom(2048)
  8.     modifiedMessage = message.upper()
  9.     serverSocket.sendto(modifiedMessage,clientAddress)

TCPserver.py

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. #import socker moudle
  3. from socket import *
  4. serverPort=12000
  5. clientSocket=scoket(AF_INET,SOCK_STREAM)
  6. serverSocket.bind(('',serverPort))
  7. serverSocket.listen(1)
  8. print 'The server is ready to servive'
  9. while 1:
  10.     connectionSocket, addr=serverSocket.accpet()
  11.     sentence =connectionSocket.recv(1024)
  12.     capitalizedSentence=sentence.upper()
  13.     connectionSocket.send(capitalizedSentence)
  14.     connectionSocket.close()

TCPclient.py

点击(此处)折叠或打开

  1. !#/usr/bin/env python
  2. #import socket moudle
  3. from socket import *
  4. serverName='servername'
  5. serverPort=12000
  6. clientSocket-scoket(AF_INET,SOCK_STREAM)
  7. clientSocket.connet((serverName,serverPort))
  8. sentence=raw_input("make a sentence: ")
  9. clientSocket.send(sentence)
  10. modifiedSentence=clientSocket.recv(1024)
  11. print 'From Server: ', modifiedSentence
  12. clientSocket.close()




---------------------------------------测试回馈-----------------------------------------------------
# ./udpserver.py
Traceback (most recent call last):
  File "./udpserver.py", line 6, in
    serverSocket.bind(('',serverPort))
NameError: name 'serverSocket' is not defined


#./tcpserver.py
Traceback (most recent call last):
  File "./tcpserver.py", line 5, in
    clientSocket=scoket(AF_INET,SOCK_STREAM)
NameError: name 'scoket' is not defined








阅读(1557) | 评论(0) | 转发(0) |
0

上一篇:chinaunix安家

下一篇:没有了

给主人留下些什么吧!~~