cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
* N. ^7 r: J5 l6 c c1 Q, p
#include
# V) v4 M+ Y, V8 v" C- Y0 K; U# W# I
#include
* l- w+ E2 o3 L' v9 t
#include
) n a! g" _/ V) q6 z
#include
- Y5 o: [" c+ l r5 I$ D
#include
2 Y# _. f a" a7 b1 a- J$ e: o
#include
3 @* E4 K4 a6 k1 d% h ?7 y; W, o5 C
#include
9 @; r: g" Y* Y9 W7 \3 O
#include
复制代码
% \ m3 U* ]( J. k1 D, K: }
3 |% }. e7 p( K" ]8 E3 X
服务器代码如下:
% P1 v' V$ ~ B
#include
6 L) P* C3 D3 D3 k4 I
#include
8 P6 d, |$ C8 Z, Z8 h
#include
- X4 _' w( J# m$ @* c
#include
]# e, z8 y: e9 k
#include
- [! N' g' E# v" P( ]
#include
* G7 W. s. o0 w2 W% C: V
#include
8 a1 [, u: }( L- }$ D
#include
复制代码
# Q0 X, Z; z+ Q0 d/ o. N/ B
7 [- A% J' {! K9 _( M' x' @ j! |
" L; f, p: \8 Y6 s, h
! a8 P, t( T0 d6 w3 O* d2 Z; `
3 B& Q; U4 d& M9 g9 O
% x* m7 L6 @3 E) K; N, {
" F7 J) @4 U: c9 [4 Z/ i
, X5 C; j, A9 t/ x9 b/ y, `
: F9 l, S6 j( i8 t6 R
3 }) ^0 G2 B' X9 m1 y
# ?7 a' j8 Z6 A* G2 @! ]: r8 k
( H2 P6 v% J8 _
6 ?- o5 T0 X: `# M0 W% y3 [$ B
5 d- G* H m' e" K
' L" u5 ?& Z6 m9 [* d3 V
! i" j) ~" g& U+ [/ `& Y
' R, r) o5 d/ I6 h
9 C' L- o/ P& P1 W, T
5 k9 i8 J8 ]2 g1 j/ e
5 [7 v. T* `% X4 H* g" K, F
作者:
admin
时间:
2020-5-9 02:30
服务端:
% c+ p( a2 I1 b Q
#include <sys/types.h>
A/ m6 J4 w$ [
#include <sys/socket.h>
, b! S# i. X7 |5 {7 r
#include <unistd.h>
& ^; j; c. p3 O# `
#include <netinet/in.h>
, q3 M2 z0 a9 m4 v: c8 v7 S3 N0 _
#include <arpa/inet.h>
+ ~8 z" m- a' e/ [% x' c# v" t6 s
#include <string.h>
, V5 ?- G' f& G
#include <stdio.h>
6 h+ c, z. s! {! k9 g9 h! ]
int main() {
% h' {* R0 h0 G5 z8 e& g, [
int sockClient;
6 R" [/ y" V1 ?; w- B2 ~
struct sockaddr_in addrSrv;
: b( U( k* e/ m
sockClient = socket(AF_INET,SOCK_DGRAM,0);
% {9 ^% F/ A& _: t0 ~& x2 I: y
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
1 {3 X6 |" B! f; o$ K2 n
addrSrv.sin_family=AF_INET;
' P3 M; B# }3 k; _: c" g+ |
addrSrv.sin_port=htons(6000);
% u& n4 ?8 L* k
while(1)
$ S \" v9 p0 T. I( E3 p
{
* c/ I' S2 Q' d( E* s0 z8 N
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
% O0 H3 v6 ^( W6 A) }: Q2 k# t5 [
sleep(2);
$ p6 Q5 j+ f" N
}
- @) y& r0 M, y4 N
close(sockClient);
) ^4 Z. B) P9 \% D. q. E8 M' G, T- p
return 0;
( r* ~+ ^4 W( | @1 H- O+ t
}
4 O: c W( A/ j3 j
; p. S5 v2 G8 x, o+ ]
3 d4 m8 n$ O- R: l) @1 u
客户端:
#include <stdio.h>
" }8 S: `- F- q* a, `6 a4 w
#include <sys/types.h>
, f/ P: p9 [% J- M' o* x) i
#include <sys/socket.h>
$ {/ _' d- [ G2 Y
#include <netinet/in.h>
0 K. N+ Y& \8 G/ |# q
#include <arpa/inet.h>
& }( R3 T! a! w
#include <string.h>
% V$ {4 _1 y1 x! w; m$ b2 j: e
#include <unistd.h>
8 v# @6 s+ @+ M" \* f8 Q
#include <fcntl.h>
: U2 ]) Q% n: ~- s0 }0 M9 v
#include <sys/time.h>
" p5 K" D8 A4 {$ `# ]' X, F" ]
#include <sys/select.h>
! ?& V" J" z" g3 d# t* s
#include <sys/ioctl.h>
* s" ]0 w/ ?/ d1 Q2 e
int main() {
, N4 F( Z" ~( z7 ?: m
int sockSrv;
% ^4 S E* x. }7 i
struct sockaddr_in addrSrv;
* I' H5 h- W+ f, V1 K1 Y: G* V6 }# f! i
int len;
8 l F5 J1 w3 N3 ?6 {' s
char recvBuf[100];
+ I/ H& V. S8 o' r* O& j- H
scanf("%s",recvBuf);
* F2 g5 t! j7 I" R
struct sockaddr_in addrClient;
) v/ |7 Y' n) v8 `- f
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
" D$ [5 s5 W: ~( ]1 _* V
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
% N% }* D9 K6 s _* f
addrSrv.sin_family = AF_INET;
0 e9 B: f9 ]" |
addrSrv.sin_port = htons(6000);
" M0 U: f d. I
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
2 S" R/ X/ g+ n- U3 ]0 }4 p" ?
len = sizeof(struct sockaddr);
, t3 Q& `* P- P4 c! u! W0 a$ A
memset(recvBuf, 0, 100);
" f7 a# N& R0 K W+ {
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
6 r k7 ]5 `. w$ e; W+ w0 ~4 i9 s
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
! s8 M' @5 v6 Q ?3 _
printf("Client data is:%s\n",recvBuf);
e7 \% ~6 L& b0 ?; F& Q
close(sockSrv);
$ N4 q( b0 P3 y Q- i
return 0;
) B+ o/ `$ ?, t" {
}
复制代码
5 q! ^9 w K1 x2 _2 f" N
: H s! M3 b( [) T# T4 o, d
1 i2 [* o) N! S+ B
* L& {5 T& v H7 V% A$ d( @0 v
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2