cncml手绘网
标题:
C语言学习之Linux下TCP服务器与客户端的实现
[打印本页]
作者:
admin
时间:
2020-5-9 02:20
标题:
C语言学习之Linux下TCP服务器与客户端的实现
客户端代码如下:
& E; j2 t2 @. n2 w# Y6 r
#include
0 p! X5 P, s- s- l- t9 R
#include
: j5 P% ? X4 b& M( E
#include
1 X3 o* y3 c9 }1 J; p& h5 A* f
#include
# u8 V# `2 M2 @2 A5 O
#include
' ?4 B7 v$ o0 s: g! I4 ^/ N
#include
; c% B4 ^0 J& @. X$ {' B% q2 [
#include
. m+ K, U! i( c8 q- \: H9 f: ?3 B
#include
复制代码
/ M1 y# N# m( P5 D
8 t* ^9 K+ B) Q# h& v3 e+ d
服务器代码如下:
7 s# m `6 A9 ?6 v
#include
: m# Y4 d- W: H" g5 G* _- S
#include
# I E8 Y( ^6 ?$ u3 v# S
#include
9 x' T8 F5 f/ [7 t( F6 L8 A
#include
' c6 X- H, E; `
#include
9 G* V" U. L2 P7 C9 ^; x9 Z( A: O
#include
: p; P- i; u Z n2 ]$ ~; d( b
#include
% a$ U0 Q# Q9 _9 n* u9 _7 O# y
#include
复制代码
% ~5 F! X& d5 P5 ^. s
4 F. g/ ]# u. |: t9 f
: Z- e$ ?) ~) ?0 G5 S# y$ x3 T
; `: q5 {! d+ i6 \$ H9 y" c% w
! A1 t1 h6 k9 w% B) z2 t
. G( d- p, ?' o
1 w: Q0 Q; e) ]
0 x/ K# W0 g7 t7 l4 a8 Z0 S/ [
. e& y2 a/ N* e$ w5 p. a
: W! U! |5 U! B0 N6 N
2 S2 d2 j& e( W. @
* X6 b2 g! s8 P" B; Y6 |) `9 {
4 |* A/ M* g+ S; E
0 K2 M$ Y7 ?% l* \( k
/ W7 C' g- ?1 O
' U( H5 A% c3 T* M# E
" v7 F, }9 C. L' ], e1 U6 k
2 } |9 n* t0 ~& k2 R
/ C3 O- M" f# v4 e! Y& Q" K* Y
9 {1 W; G8 i: Z& A# k3 R
作者:
admin
时间:
2020-5-9 02:30
服务端:
; Q# z2 g4 S: B) R
#include <sys/types.h>
+ h; ~& C V ]) }' G
#include <sys/socket.h>
1 Q, n' G6 v& d& X+ o
#include <unistd.h>
# Y9 y: [4 o' m6 K$ e3 g
#include <netinet/in.h>
E, d5 Z7 n4 K/ i- w# n
#include <arpa/inet.h>
! @" P( t7 F) W! |! ?$ M
#include <string.h>
6 e. W7 D8 y7 Y, B- q
#include <stdio.h>
6 i% t* A$ s5 T2 w
int main() {
, B# z t6 O/ L. O! l& J) y
int sockClient;
% H! A- T6 e! s+ y$ j: l
struct sockaddr_in addrSrv;
7 k6 p+ H, ^" T
sockClient = socket(AF_INET,SOCK_DGRAM,0);
" E( b7 U4 \. i4 u1 D. j7 O$ _* z* T6 g
addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
- a% F/ B. _% h, q! [
addrSrv.sin_family=AF_INET;
" S) N* M5 O/ E) W' Y0 O* d/ z* W8 _
addrSrv.sin_port=htons(6000);
8 x# m! `- D8 F
while(1)
5 _# j2 `) `3 b9 Z1 d. I
{
a3 Q$ b; \* [+ D! z4 {9 K/ K
sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
) Z' P! z" R- g1 b) o5 I4 S
sleep(2);
& w0 T3 c3 X+ {, ^. ~( j+ V
}
3 j. ~9 c. u$ b$ C& K; W
close(sockClient);
7 p7 i( z# d7 g. s, J9 m
return 0;
& s9 |# x9 w' `3 j: }3 G
}
n+ @/ q0 L( }: u+ W$ q
* Y( C; P3 r+ I5 a" o
0 M, B; ~; v+ K5 {) E' c
客户端:
#include <stdio.h>
( F* W9 U# w" h- l8 S
#include <sys/types.h>
; p4 b. \ h4 Z
#include <sys/socket.h>
4 Q* M% D& ]0 s
#include <netinet/in.h>
. h% O0 ~- U2 u0 S: f& ~
#include <arpa/inet.h>
9 X0 p& W) |. Q @7 G
#include <string.h>
! e5 N8 n; }4 j0 t
#include <unistd.h>
! [0 J& H) [% l+ G( b
#include <fcntl.h>
/ A$ h" u+ @* b/ f' g0 V+ ?
#include <sys/time.h>
4 J& n# e- H. I- P* [
#include <sys/select.h>
) G- Z* w9 W3 D- N
#include <sys/ioctl.h>
; S' k) O" p8 R2 e2 n" t# H. l
int main() {
4 g8 ]0 N" ~3 l5 }1 s( Z8 V
int sockSrv;
, b7 C# t8 u1 N4 n* }$ r- T
struct sockaddr_in addrSrv;
/ O5 \6 [) o7 ]1 ^! G, v
int len;
: Y2 y, U, Z, f8 A9 u: L! @: L
char recvBuf[100];
( ^; a0 i0 d. L* Y& a( P6 L3 l
scanf("%s",recvBuf);
8 Z: y3 p3 H4 O( ^% K+ a$ ]
struct sockaddr_in addrClient;
& V, \5 c% s8 q( ?' g: B
sockSrv = socket(AF_INET,SOCK_DGRAM,0);
1 i$ y3 t3 ~5 S. X
addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
7 D# G. m7 l+ n% H4 [: q- N# b- y
addrSrv.sin_family = AF_INET;
0 G+ ]/ J2 P! Y0 S: V# X5 i
addrSrv.sin_port = htons(6000);
7 ]8 A- h$ k1 d, h/ g9 O/ q
bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
' v% j, P' Q/ ]+ L, J) L
len = sizeof(struct sockaddr);
4 `7 @+ ~( @: m. K( r
memset(recvBuf, 0, 100);
. Y: H4 O0 a' v0 ?
recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
+ p5 q, I6 s/ p/ C% ]% n2 I
printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
; b/ p6 |, N* N, s1 U3 `) |* Z
printf("Client data is:%s\n",recvBuf);
j9 M! {& n& F2 E4 y; o% W* X: A1 Q
close(sockSrv);
- L" f6 z: F' M! m1 W
return 0;
1 G2 S9 ^/ g/ \9 P# g5 Z4 |( Q
}
复制代码
3 B3 s2 o6 P7 S! a0 K
) W8 Y. Q4 X, t2 s3 w8 O
: ~8 J2 }" ?( G1 b2 U E. h
0 W- z) q3 n% T5 S g7 d
欢迎光临 cncml手绘网 (http://bbs.cncml.com/)
Powered by Discuz! X3.2