socket 例項化方法

2022-08-18 10:21:14 字數 2936 閱讀 4856

#

!/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...