cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
+ y5 C4 _$ s' M o$ c
#include
3 i! T4 Z: }8 B2 d6 z& p0 M) }' J d
#include
# b: V2 \5 L2 U& @6 `
#include
; s2 L% ` D( n8 p5 Y
#include
3 N; n7 c4 |) J! k F, J- v% \
#include
) f, }, \, ~8 x
#include
/ x3 w- b7 V" m0 T8 O! T7 F
#include
: a& l! y% c. g7 B& O! D( s
#include
复制代码
6 R+ V& Q% ^# Z3 U' K. M
8 F, C2 ?+ S. k: {
服务器代码如下:
4 {2 E+ n5 P& c D, f6 `$ [
#include
" O" T" c# |3 C6 f
#include
6 _$ J. h! G# y* i- |2 ^
#include
# K! ?' U# w2 z( ?: |% O
#include
" ]! t5 A' |6 k5 i; {
#include
5 `3 M a9 U. X( W
#include
q/ w! l# G2 L' E$ m8 ~
#include
1 r( h$ t% Y! V5 e) p- E0 z
#include
复制代码
* R& m8 J: c" q- Q& j& w
' S! K6 s4 F- T" m9 X
8 [2 `% N3 k0 `& n7 K9 {
2 j6 h4 g9 l4 J1 i
- ~, @% g+ |( a- S
' ]$ s% X& F7 m; l0 v
4 a( W9 c" W1 i" a- m0 p3 l; {; p
N- c; p3 p. O! l D- |
: r9 D+ b- a% v2 q# f3 C. f
: Y: C$ {/ Z0 A3 H
( o% }1 S# R* h( M. v4 k* H' q
* N$ P' ^6 E$ q0 b. \$ p
0 h& N5 `' F; s# Q, A$ {3 }
" D0 B6 |, e5 l& e* v
8 C; |0 ^, N8 g: K' N
9 x; A( x; i2 U7 m
$ V: M, w; \% z8 }0 T1 H& R
" H& |3 o! t9 Q. J, c& v
' ]2 j8 c; {8 a4 B) i r
# B# w) T" X% {
作者:
admin
时间:
2020-5-9 02:30
服务端:
% Y/ x' Z. K7 C
#include <sys/types.h>
5 r T$ P" O6 ~0 [; d2 T7 f
#include <sys/socket.h>
; H8 f' Y- I" o7 z& t- @, h7 e
#include <unistd.h>
: H) Z1 f' R S% H4 t( P
#include <netinet/in.h>
- K4 v. G6 Z* D
#include <arpa/inet.h>
. g, p4 O$ h' T. R% `+ Z& O P
#include <string.h>
4 r- ^& K: W0 o4 g( M; Z7 Z
#include <stdio.h>
0 ]& |: ~6 s% n9 q) W
int main() {
6 U7 C/ p2 U; u1 e# ]& [) ~ [
int sockClient;
- j( i* p' z* t% n, j
struct sockaddr_in addrSrv;
; s: `' G. j# y6 R# { g
sockClient = socket(AF_INET,SOCK_DGRAM,0);
; N# N( K( M" A7 `( @# J, k1 z
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
5 O& e9 ~" K4 n
addrSrv.sin_family=AF_INET;
" L4 [3 ~+ I/ z+ G" V# f; h$ z
addrSrv.sin_port=htons(6000);
' e2 ^6 |, ~4 A8 Y- `
while(1)
9 S- q6 Z+ h6 _" l2 @
{
6 T9 x' c, Y& m
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
c5 H( Y" p2 s
sleep(2);
+ H% o' H( v9 s9 M
}
3 z" Z/ N, s( w
close(sockClient);
) V$ }9 N. e; M+ e1 a) z
return 0;
; V, u2 k/ f S* j
}
. c/ x( S' t. _( z$ m
/ n' \4 u, W$ n' Q6 w
( b, C- r. w4 M5 A& C; P
客户端:
#include <stdio.h>
0 C/ L# c5 k) v0 Q5 C1 B; o
#include <sys/types.h>
6 B; A# I* \# B
#include <sys/socket.h>
* T# c) ^ h+ A% L
#include <netinet/in.h>
9 L: U. n% j7 K. b8 O' d s
#include <arpa/inet.h>
* ~$ D2 j8 d- T
#include <string.h>
. G' i- f/ W5 R" D( K/ s* R
#include <unistd.h>
4 Y ?* B k: j6 Z: k( V5 x
#include <fcntl.h>
8 U' \' B% d! g. x( |1 S% b0 E( v
#include <sys/time.h>
8 D+ D. m& {$ j3 O4 y( r
#include <sys/select.h>
/ D# N" R% H% U+ Z
#include <sys/ioctl.h>
. c; h5 q' t9 \9 V: m1 H
int main() {
/ k# i. M$ T/ u2 m4 E
int sockSrv;
, w) F5 P% @% J; U. D9 k
struct sockaddr_in addrSrv;
. E* M4 {5 {! Q8 k. ~
int len;
! d7 U2 h9 q, c+ w4 {( g8 U9 g
char recvBuf[100];
5 E3 m- `' `# Q# o1 Z* Q
scanf("%s",recvBuf);
$ p* i8 j. `+ C
struct sockaddr_in addrClient;
" i+ F' K: h" a) c/ X0 U# d1 e
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
1 ]' s8 S: W0 Y4 g# J9 \
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
5 H6 S, @& V$ e- O3 m" T
addrSrv.sin_family = AF_INET;
# [" j" a% R, F
addrSrv.sin_port = htons(6000);
7 X. m( J# k9 v& V
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
) v* v" r3 h. l1 ~% t8 ~
len = sizeof(struct sockaddr);
9 y; R2 u$ P' g0 U/ x3 n
memset(recvBuf, 0, 100);
, w" H+ ]3 _% U
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
1 m; \8 E4 x& c# m1 G. I* t9 x
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
& N: Z- Q: n" w! S- H3 x
printf("Client data is:%s\n",recvBuf);
v) g+ a$ t! z; f2 j% l7 b
close(sockSrv);
; |2 d7 x5 [; T" x
return 0;
! @2 R) M# f5 J! w5 C$ [; I+ L! _) J
}
复制代码
2 ~3 b }; c g) `4 f0 L* \) e* q2 W
- F; W! X# Q8 O- r1 T/ z3 H ]
" T/ j; q; g: r+ S
/ l2 N$ f8 c* d
欢迎光临 cncml手绘网 (http://www.cncml.com/)
Powered by Discuz! X3.2