#!/usr/bin/env python
#encoding: utf-8
import
socket
ip_port = ('
127.0.0.1
',9999)
sk =socket.socket()
sk.bind(ip_port)
#將套接字繫結到位址
sk.listen(5)#
開始監聽傳入連線。backlog指定在拒絕連線之前,作業系統可以掛起的最大連線數量。
while
true:
print("
service wating...")
conn,addr =sk.accept()
#接受連線並返回(conn,address),其中conn是新的套接字物件,可以用來接收和傳送資料。address是連線客戶端的位址。
client_data = conn.recv(1024)
#s.recv(bufsize[,flag]) 接受套接字的資料。資料以字串形式返回,bufsize指定要接收的最大資料量。flag提供有關訊息的其他資訊,通常可以忽略。
print(str(client_data,'
utf8'))
conn.sendall(bytes(
'do not ask
','utf8'))
#s.sendall(string[,flag]) 將string中的資料傳送到連線的套接字,但在返回之前會嘗試傳送所有資料。成功返回none,失敗則丟擲異常。
conn.close()
client
#!/usr/bin/env python
#encoding: utf-8
import
socket
ip_port =('
127.0.0.1
',9999)
sk =socket.socket()
sk.connect(ip_port)
sk.sendall(bytes(
"hehe
",'utf8'))
server_reply = sk.recv(1204)
print(str(server_reply,'
utf8'))
sk.close()
s.bind(address)將套接字繫結到位址。address位址的格式取決於位址族。在af_inet下,以元組(host,port)的形式表示位址。s.listen(backlog) 開始監聽傳入連線。backlog指定在拒絕連線之前,作業系統可以掛起的最大連線數量。該值至少為1,大部分應用程式設為5就可以了。
s.connect(address) 連線到address處的套接字。一般,address的格式為元組(hostname,port),如果連線同一臺機器上的伺服器,可以將hostname設為『localhost』。如果連線出錯,返回socket.error錯誤。
s.connect_ex(adddress) 功能與connect(address)相同,但是成功返回0,失敗返回errno的值。
s.accept()接受連線並返回(conn,address),其中conn是新的套接字物件,可以用來接收和傳送資料。address是連線客戶端的位址。
s.close()關閉套接字。
s.fileno()返回套接字的檔案描述符。
s.getpeername()返回連線套接字的遠端位址。返回值通常是元組(ipaddr,port)。
s.getsockname()返回套接字自己的位址。通常是乙個元組(ipaddr,port)
s.getsockopt(level,optname[.buflen]) 返回套接字選項的值。
s.gettimeout()返回當前超時期的值,單位是秒,如果沒有設定超時期,則返回none。
s.recv(bufsize[,flag]) 接受套接字的資料。資料以字串形式返回,bufsize指定要接收的最大資料量。flag提供有關訊息的其他資訊,通常可以忽略。
s.recvfrom(bufsize[.flag]) 與recv()類似,但返回值是(data,address)。其中data是包含接收資料的字串,address是傳送資料的套接字位址。
s.send(string[,flag]) 將string中的資料傳送到連線的套接字。返回值是要傳送的位元組數量,該數量可能小於string的位元組大小。
s.sendall(string[,flag]) 將string中的資料傳送到連線的套接字,但在返回之前會嘗試傳送所有資料。成功返回none,失敗則丟擲異常。
s.sendto(string[,flag],address) 將資料傳送到套接字,address是形式為(ipaddr,port)的元組,指定遠端位址。返回值是傳送的位元組數。該函式主要用於udp協議。
s.setblocking(flag) 如果flag為0,則將套接字設為非阻塞模式,否則將套接字設為阻塞模式(預設值)。非阻塞模式下,如果呼叫recv()沒有發現任何資料,或send()呼叫無法立即傳送資料,那麼將引起socket.error異常。
s.setsockopt(level,optname,value) 設定給定套接字選項的值。
s.settimeout(timeout) 設定套接字操作的超時期,timeout是乙個浮點數,單位是秒。值為none表示沒有超時期。一般,超時期應該在剛建立套接字時設定,因為它們可能用於連線的操作(如connect())普通的非套接字例項的函式
getdefaulttimeout()返回預設的套接字超時時間(以秒為單位)。none表示不設定任何超時時間。
gethostbyname(hostname) 將主機名(如「www.baidu.com」)轉換為ipv4位址,ip位址將以字串的形式返回,如「8.8.8.8」。不支援ipv6
gethostname()返回本地機器的主機名。
Socket連線例項
今天我們來學習下如何在ios中使用socket連線,幸運的是,感謝github,我們找到乙個第三方的開源類庫可以很方便的幫我們實現這個,接下來我們就來實現一下,不過這次雖然有圖形介面,但我們沒有新增任何東西。首先說一下這裡server端是用python寫的,簡單的寫了乙個,如下 python vie...
Socket程式設計例項
struct sockaddr sockaddr定義的標頭檔案 sys socket.h struct sockaddr in sockaddr in解決了sockaddr 的缺陷,實際上相當於把sockaddr 中的sa data分成了3個部分 sockaddr in 定義的標頭檔案 netine...
用例項工廠的方法例項化bean
在例項化bean時,除了setter,constructor方法外,還有例項工廠方法,和靜態工廠方法。看 people類的 如下 package com.timo.domain public class people public void setname string name public in...