您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14290|回复: 1
打印 上一主题 下一主题

[C] C语言学习之Linux下TCP服务器与客户端的实现

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:( ~) P/ M+ F0 `6 O% R4 t* `* G8 J
  1. #include( A  b8 K  a; ^6 e5 L
  2. #include. @5 T" C- v# ]" v/ i0 s
  3. #include
    + p; ]& e: p" {3 F6 v+ b/ G: D* Y
  4. #include- h% U3 M7 ]; Q! F3 c
  5. #include3 M5 v  E& g( ]2 v" Y( h" o
  6. #include
    : K7 c$ k2 P0 ^( ^# u& N
  7. #include) X0 K: ?; h! t1 f
  8. #include
复制代码
$ g4 d# [: M: z% g  m* h

% A% w- }$ m1 N) J% N: z; b服务器代码如下:
" w: `$ d* j" c: ]0 Y
  1. #include% r' f( O, h; C; h7 n9 q  H3 A
  2. #include4 p; T# z0 }& v' O2 U' i
  3. #include* ^: V3 f7 j5 I( t4 i
  4. #include
    2 r0 m  `: b  c/ ?
  5. #include
    4 E+ u! t3 {! O3 ?! h* W
  6. #include$ V- C1 e5 o' l  ^
  7. #include- P5 k- ]: x* s$ q* \: I
  8. #include
复制代码
) B& j& _" s1 ~( o

3 o% H4 G" T( J! ], |. I, n+ _! Y# E9 g$ Y/ T1 ~, o

7 K+ ^8 T8 c! `% u1 s
' j% j* a$ r* \( Q+ t

6 }# N3 R+ t7 C: v2 H! z) \
6 R9 K& e( ]+ W0 l0 J
( C5 b* k; U5 S

* J8 a7 `6 O3 y
8 n& P- q/ k! Z) O- v
6 U& t) U  O, d: n
# W5 F( s) v- }% ^* R
/ w4 J; j& O4 p2 X! c

( R; O0 Q9 `/ ^1 S" e& r9 ^  L" R7 ~# g  }- f6 `

3 I- d# A$ ~4 a# K
, W& ]5 B+ \6 y# c
$ t6 B1 ^6 K. N8 e' |/ H
3 \( n  t9 E9 v, j

( _! O' @$ z& C$ |$ |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
) `- O( `7 o6 I6 {! P8 y#include <sys/types.h> 
3 D* _5 m3 {+ v* v: ]#include <sys/socket.h> + Z9 b( [; Z, d
#include <unistd.h> 
- H, u) O4 `5 X#include <netinet/in.h> 
- Q" o! V+ M# [7 M- ?# n8 K#include <arpa/inet.h> 
2 x! C- F; i+ }. ^#include <string.h> & J* `0 n9 |+ g, W+ e2 I7 ~9 B
#include <stdio.h>  
& E7 p5 }4 u* y* _! T3 Aint main() {- j- B1 a0 C  I+ }9 t& \
        int sockClient;
' r; n* x% E, E0 b5 O* g! k        struct sockaddr_in addrSrv;& N5 v  j2 P" \0 A$ M/ L
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
2 Y" P4 m. H! G# a' s4 \! B9 _        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");4 }0 \( {3 U! R4 m0 O$ r
        addrSrv.sin_family=AF_INET;
& D* h( }# ^! a3 ]) L9 j" G1 d! b* L        addrSrv.sin_port=htons(6000);
: [" q9 _( z) B0 U7 C0 R4 I( Q" ~        while(1)
- p9 Z* |- h, v& \        {
' n' k  k6 _; j                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
$ ^5 c% j3 \; k# J1 X+ h" ~* D/ R                sleep(2);5 }3 \4 l, p) C% k, h, f
        }    
3 l3 H8 t  |, ^+ E" P4 J) y        close(sockClient);  ! d/ X0 z  o* R- v# F2 `
        return 0; 
& |( w+ n( z1 y% o# }* L# y# v6 W$ m}
* U: M' H8 H* U5 p2 k5 N$ V" I1 |( x/ u

$ L$ i; e  {; `- x客户端:
  1. #include <stdio.h> 
    0 _- Q8 ]! H& E4 j$ H. B( o/ T
  2. #include <sys/types.h> ) P* J$ z' p: ]) N
  3. #include <sys/socket.h> & P3 B  x6 f% i
  4. #include <netinet/in.h> 
    8 g3 y; Y6 k0 y( b- {# {
  5. #include <arpa/inet.h> + K; }. J  r1 p. I# u+ }+ t# Y
  6. #include <string.h> 
    + f8 h6 n* A) V9 R+ B2 h
  7. #include <unistd.h> , ^" T( H; S+ H+ k# @/ O( O- _
  8. #include <fcntl.h> 8 ~' q8 N' w" ]$ r# I# i
  9. #include <sys/time.h> 
    2 ]6 O: t) n5 q1 _
  10. #include <sys/select.h> 
    : ]1 e7 |1 n! R" C! P
  11. #include <sys/ioctl.h>  
    . u9 R9 }2 t8 E5 w/ N. U7 a9 n% {5 U
  12. int main() {6 U, }* g% N$ e3 v, b
  13.         int sockSrv;
    $ M* m9 J' x' u9 l
  14.         struct sockaddr_in addrSrv;( P+ e& c) u% Y) U% ]
  15.         int len;
    7 ~# @( R  M* b! o& [% n
  16.         char recvBuf[100];' \* B7 n; _4 U  q% w
  17.         scanf("%s",recvBuf);* I  i. @: b) R6 E
  18.         struct sockaddr_in addrClient;8 p/ {8 t# e3 {" O! u+ M9 P
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    6 F- {9 Z) J! {0 ?5 r5 y# {7 [# a
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);% S' Y/ _. c6 w* a' x- S6 q
  21.         addrSrv.sin_family = AF_INET;1 O0 Q/ N0 X* y, T  M4 h
  22.         addrSrv.sin_port = htons(6000);  c0 J, S( p5 X: ~% q* ~
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));/ J+ S2 G2 z! B0 s# n
  24.         len = sizeof(struct sockaddr);
    ! ^% A6 N% @# P$ y
  25.         memset(recvBuf, 0, 100);
    % G; S6 n5 l' g$ O# U9 G
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
      y7 ^& G3 M! I5 g' Y
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));3 v* r4 p8 ]) e/ [4 S
  28.         printf("Client data is:%s\n",recvBuf);, C: a, M8 A$ D* A4 a
  29.         close(sockSrv);
    ; ?# E4 i& D; {. k
  30.         return 0;
    - w. w7 V( t9 u+ r0 r8 z% d* |
  31. } 
复制代码

: Z8 L0 R* r( O+ j0 l' e/ Z& u( @0 U' L( L

, N$ P* k3 D9 o
7 ^& B) R3 e7 M4 Z
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 07:22 , Processed in 0.055713 second(s), 18 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!