cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
, a3 R) F2 `6 Z3 V$ ^$ Q$ s
#include
7 z( t* D9 b) K1 _. i
#include
1 t9 Y) S2 P. o+ I1 K
#include
\4 _1 t- e. W7 `& T
#include
9 ~" B" N2 U* U
#include
& j- s& a, g U
#include
" U4 d+ C, [! J/ v: D
#include
1 g. q. `: c; M$ q9 U R/ ^9 W
#include
复制代码
; N0 d5 a, Z* y( G
. l! T( z' V1 T. i
服务器代码如下:
T/ L# x5 M6 i8 t7 K
#include
6 N+ Y; L0 ~' [0 l
#include
& ~6 q4 E' f, U( t3 a/ _
#include
- F. R1 s1 Q+ ?$ v% I# W/ e+ x( N+ ~4 n
#include
# n4 C8 V6 q6 g* j5 j5 T
#include
5 K1 o$ \! I+ K8 N" G
#include
# F# @8 l4 D8 ^
#include
9 }/ A7 _4 P0 K' O9 o- B5 x, X$ {
#include
复制代码
- {9 ]% a8 M% q7 G0 j6 u
/ [3 v# }* ?# F, O- m% I
[0 @' A4 E, T# F) H4 S$ _
) }2 x6 I8 b( X. S7 U, M' W
9 ~9 q' ?4 Z3 ~3 K
/ \+ h. R/ S* `* y: I7 ~
& M9 P2 `* d1 w
N% v( i( u1 k7 q; d* @
# V0 r9 u, a( Z, U
! }( w4 J2 u$ _* k6 m9 Y) Q
+ K# M7 Q: ?$ e
3 u' R: E, X" L; N: `, J
+ Y- Z$ E9 R5 K. z1 E0 T1 a
* H5 v4 ^- b R2 i; a
1 D! K+ ?+ u# r& R+ t Q& Y. F! U8 N
b5 g( b% g4 g" T) l4 M% i
% j5 K2 r( A9 e! m# T2 F
/ i7 n* U! v5 b8 L' G" e9 b
8 G4 r1 z& R/ q# Z3 t7 t1 n V
+ n0 E& {1 ~+ k4 ^
作者:
admin
时间:
2020-5-9 02:30
服务端:
! W5 k+ [. f) t( }
#include <sys/types.h>
3 U T4 M& [; ~* ?) I
#include <sys/socket.h>
" X% ?9 n3 i+ k2 K4 \3 C. n
#include <unistd.h>
7 ]) [: F, @7 a
#include <netinet/in.h>
$ S; s" M7 R4 T5 G8 z, f* E
#include <arpa/inet.h>
* R6 G2 @4 L- C# F+ e
#include <string.h>
/ i/ ~, p8 f. m( N$ j, ^* P
#include <stdio.h>
0 t/ d2 L+ c1 v ]- \3 S
int main() {
" q, P9 i# r! s g7 A
int sockClient;
[ X+ y9 `3 k
struct sockaddr_in addrSrv;
J9 y0 Y ^5 V. | Q- F
sockClient = socket(AF_INET,SOCK_DGRAM,0);
' t! K6 O' D. O7 x
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
! _/ i- O8 k# b3 c! r+ c3 t" F
addrSrv.sin_family=AF_INET;
3 x) x. ~9 @1 r2 v3 w) M
addrSrv.sin_port=htons(6000);
0 T( Z- z1 p2 u2 R8 U: F
while(1)
- ]' r( J1 k3 `2 f9 q; c
{
% v4 U* n! t" L, A
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
3 n0 d; d% s# O+ c+ |3 ?: `* `& X/ K
sleep(2);
& K, Q- g+ s: d0 m4 z0 t
}
% ~, o1 Q4 J7 @% ?% F& T
close(sockClient);
; i7 v. w! M# H2 ?& r
return 0;
( U3 W7 c* g% a" e; t
}
0 k! e F- O+ n2 k! e+ d
0 ], N# y( w/ n) ~, k
+ @: y5 ^7 x9 v4 g8 C9 c5 o( q
客户端:
#include <stdio.h>
3 |+ ^. s a) H, O1 H
#include <sys/types.h>
% w5 C5 N6 i% O
#include <sys/socket.h>
0 U; i1 u- ~4 d r, @; z
#include <netinet/in.h>
1 t y) ^* P2 a: j8 L5 s; j$ o
#include <arpa/inet.h>
% N5 a' S5 V" R+ K& K; t4 u$ n
#include <string.h>
5 E+ v4 x% [% d
#include <unistd.h>
0 }/ S, ~: Y: p: y r
#include <fcntl.h>
+ t( w, `9 w9 R
#include <sys/time.h>
1 B/ b9 \0 x( Z: W6 K3 v
#include <sys/select.h>
; T6 ~3 ?+ I) _ ]7 h
#include <sys/ioctl.h>
# O2 m4 Q1 ~, N
int main() {
( b4 [% p6 e8 m3 I5 t) b
int sockSrv;
3 m9 m3 Z' H8 J5 [; }1 }' U2 z5 b
struct sockaddr_in addrSrv;
5 E2 N; T O) r, W) C1 r, X+ O
int len;
9 [( g1 X' }! r# n, V
char recvBuf[100];
" v& K1 l9 n- A3 n
scanf("%s",recvBuf);
' p0 j: ~4 @0 P3 B& C- L8 Z6 F
struct sockaddr_in addrClient;
0 T8 g( P! [+ u2 _% _) o' C* P
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
* e: b* T; ^3 i1 U( @
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
v+ V' _- u8 \9 Y& ~
addrSrv.sin_family = AF_INET;
7 x3 Z- Y( i4 Y0 ^0 @' V
addrSrv.sin_port = htons(6000);
( Y0 _" h$ u1 M1 @2 w4 a: G4 R
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
& ^" `( X% M" _( ]1 ?9 X; y; c5 _
len = sizeof(struct sockaddr);
/ o) m% D' `. I3 c x' k& _
memset(recvBuf, 0, 100);
' g. `/ j6 X2 u/ h
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
% _3 j' N# f- L3 D0 W! Y
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
- D8 I% a* A2 B3 |
printf("Client data is:%s\n",recvBuf);
0 ^4 |/ y$ W( _4 p8 m' C
close(sockSrv);
- S; g9 j$ {7 ~* W
return 0;
/ L) v4 Z ^8 j/ W* M- Z# _
}
复制代码
# v, T& P. v" K
! r: M* w" ?, ]0 s& S/ C) H
8 j$ i- [9 J1 e- a- W( J
2 \' [) c$ `, {. Q/ f4 ~9 D6 V' Z
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2