cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
( x# z$ u, z G X, e
#include
, @. C; G9 d+ M! w8 |8 r, `
#include
3 ?# v2 r1 H& S! Y
#include
' H: d* @" O6 {, @( u7 g
#include
! L3 o7 m% p7 `8 a0 t6 q
#include
8 L6 L2 C3 D/ Z( s
#include
* b: l2 m1 e! `, {0 }7 ]
#include
: R' ~+ h& {7 ]3 g# I6 {4 u
#include
复制代码
: E1 g9 ~* L* C$ d4 w
9 d1 g% ~1 C( c0 ~
服务器代码如下:
' Q% q/ z' O! T+ B+ R
#include
6 M2 H, T( Z j
#include
6 T: `0 h6 S* e+ q
#include
8 a+ Q# a% J5 x
#include
7 \7 F1 g1 U- w* t+ z7 \4 F
#include
1 ~* ]# e6 f" O4 m
#include
a9 x, i- t2 h' f
#include
7 X8 P; f+ m1 {9 a! _
#include
复制代码
T, ]' x4 R( r
0 U2 q4 ?8 j# \2 Y
. {" o) ^9 U3 F0 a7 F* N6 \: x/ d
$ F9 o( x, F+ @/ G0 a* L4 Y
9 \: H4 o/ X/ i( I
" ]( K2 @2 u. }5 M! p
+ c& v$ ^' m2 f' o
* P6 I i- L2 z1 Q4 s
3 u3 G% P. Q- r
8 [2 T; P5 H9 u2 X
" ^) \ t1 Y' x$ f3 D
' u7 ~! W" @7 K7 j
8 P3 M; H% ?4 g7 E" B4 {; j: {
; X8 d6 m$ [$ x) _
0 d4 B. L9 v( I& D" I. H
; u/ K" }6 E4 z+ K& o# J
. o% q* o( M& a9 x
/ s. J6 c$ n* C/ d1 ?2 Z
; s: i- I: w" o9 j2 C$ a$ i
6 f6 P+ f8 ?# B
作者:
admin
时间:
2020-5-9 02:30
服务端:
# z' u0 N. o- K# S
#include <sys/types.h>
- U* [2 a- [; a5 N1 N3 N9 w) }
#include <sys/socket.h>
l1 `4 b" O+ w' l3 `/ y
#include <unistd.h>
$ W. J5 _( F9 i) u0 v4 F) U
#include <netinet/in.h>
: J0 I) p' N y4 H
#include <arpa/inet.h>
) s) }/ ^# ~9 K1 d, v
#include <string.h>
; X. g1 L/ z7 P) C/ {& m
#include <stdio.h>
6 R. A7 m4 l2 a0 X6 r
int main() {
2 E; o- G+ F- h$ |, ~" ~4 }8 ?
int sockClient;
& H/ Q( [5 J Y; q2 B1 _ ~
struct sockaddr_in addrSrv;
/ r/ M/ P& U7 i; w
sockClient = socket(AF_INET,SOCK_DGRAM,0);
! i U5 L9 _$ \3 w
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
. B+ T5 r( U; _) d! X) G: }9 y
addrSrv.sin_family=AF_INET;
) O5 a/ I) w: z) {9 x
addrSrv.sin_port=htons(6000);
. D5 f7 M/ O. j
while(1)
?3 r/ y* j4 I, X) Q- V
{
4 T! F# z) S! y+ f
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
/ G/ s7 i% I u! L3 c$ M: V
sleep(2);
0 Z6 I" e" h8 {
}
- s. J2 N6 m3 [/ e
close(sockClient);
$ w- m* d' U1 K. x
return 0;
3 {9 o8 F/ c8 \5 A5 I% X: l
}
+ M7 R* a" S- e
' \- {1 [5 M3 N" N) h" J
. p* E5 V, q9 m+ e% f1 F
客户端:
#include <stdio.h>
! `3 Z: P. s* q) s( [( l
#include <sys/types.h>
* r7 C# K3 J5 v" H# e6 q5 X2 ?
#include <sys/socket.h>
/ _) H! c. l( U. h0 m% e
#include <netinet/in.h>
4 I. k$ t4 V9 j* U0 o5 V. X, t
#include <arpa/inet.h>
+ G) y1 F" N( F6 J5 n+ T
#include <string.h>
: C9 w7 F( J0 R/ L( i* R0 y
#include <unistd.h>
2 F. ?( m8 I6 N9 M+ E1 j
#include <fcntl.h>
7 _7 ~" `/ ?* H' y
#include <sys/time.h>
: r, l4 B$ f' g* v9 w7 U' E& L
#include <sys/select.h>
) H$ J, f& u6 [7 C; p' W7 r
#include <sys/ioctl.h>
9 z5 F+ k/ z- Q2 b
int main() {
- [% y) k, \, B* L3 ]& H- U
int sockSrv;
1 E5 x' Q1 d8 e( b% }. J
struct sockaddr_in addrSrv;
6 V% d7 j2 E( w5 ]1 I2 ^ N
int len;
' r/ v; t8 w% O* \5 H
char recvBuf[100];
1 m/ x3 V' g. E, l* o. Z
scanf("%s",recvBuf);
2 Y! A. {- R% |5 H2 m
struct sockaddr_in addrClient;
" G+ R( y j: d( I4 ^, w$ `5 w% s
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
& S* k: z# L6 L* ~! ]) w+ ]7 k
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
, Z( E( B# x5 D& e
addrSrv.sin_family = AF_INET;
6 A1 y( l9 e5 s4 u
addrSrv.sin_port = htons(6000);
% ~7 l+ [& V, {, f2 ?
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
' R- b9 y* U7 a8 e+ y
len = sizeof(struct sockaddr);
' P& Q; n3 S! f" Y# k V
memset(recvBuf, 0, 100);
+ N! _# f3 w, }: {+ `
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
) u% h4 c( ~. X
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
' @" f& ?$ n" n' K" x7 m
printf("Client data is:%s\n",recvBuf);
' J* ]& j8 D" o& P3 `9 K& U0 G
close(sockSrv);
$ u4 `& |9 d. ^1 h
return 0;
/ K' w/ J/ K' I& r; g
}
复制代码
9 J' C* O! j4 q( K
; L$ |1 `8 y/ u+ R( R
. W8 q9 g$ M. D) v. s4 z
; w0 p* O; `- p) D" J' x" M
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2