**
tcp程式設計的伺服器端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt(); * 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();
4、開啟監聽,用函式listen();
5、接收客戶端上來的連線,用函式accept();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連線;
8、關閉監聽;
struct sockaddr_in addr; 定義乙個ip位址
tcp程式設計的客戶端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選
4、設定要連線的對方的ip位址和埠等屬性;
5、連線伺服器,用函式connect();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連線;
udp程式設計的伺服器端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();
4、迴圈接收資料,用函式recvfrom();
5、關閉網路連線;
udp程式設計的客戶端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選
4、設定對方的ip位址和埠等屬性;
5、傳送資料,用函式sendto();
6、關閉網路連線;
server.c
#include
#include
#include
#include
#include
#include
#include
#include
#define myport 3490
#define backlog 10
main()
my_addr.sin_family = af_inet; //sin_family表示協議簇,一般用af_inet表示tcp/ip協議。
my_addr.sin_port = htons(myport);//設定埠號
//my_addr.sin_addr.s_addr = inet_addr("192.168.0.123");
my_addr.sin_addr.s_addr = inaddr_any;//auto-fill with local ip
bzero(&(my_addr.sin_zero), 8);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
if (listen(sockfd, backlog) == -1)
while(1)
printf("server: got connection from %s\n", inet_ntoa(their_addr.ain_addr));
if (!fork())
close(new_fd);
exit(0);
}while(waitpid(-1, null, wnohang) > 0);}}
#include
#include
#include
#include
#include
#include
int main()
C TCP 伺服器客戶端Socket程式設計
server.cpp include include using namespace std include define buf size 64 pragma comment lib,ws2 32.lib int main 建立監聽的socket sserver socket af inet,so...
linux 下socket 伺服器和客戶端非同步通訊
我們知道用socket進行通訊時,傳送資料和接收資料所使用的recv send函式會阻塞程序,只有收到或傳送資料後才能返回值,導致是socket通訊只能實現伺服器和客戶端交替收發資料,而使用select可以很好地解決這個問題。諸如connect accept recv或recvfrom這樣的阻塞程式...
socket實現Udp併發伺服器和客戶端
tcp 通訊 udp通訊 面向連線的,可靠資料報傳輸。對於不穩定的網路層,採取完全彌補的通訊方式。丟包重傳。無連線的,不可靠的資料報傳遞。對於不穩定的網路層,採取完全不彌補的通訊方式。預設還原網路狀況 穩定 資料流量穩定 速度穩定 順序穩定 不穩定 資料流量不穩定 速度不穩定 順序不穩定 傳輸速度慢...