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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:3 B) a4 s: t# @# f3 e4 H
  1. #include/ ~) I. a( h" L* [* s
  2. #include7 D! ~; G* n; K* |$ t, H; Z
  3. #include8 A0 X) c  `* E& P
  4. #include
    * V9 H0 n1 Q" _; x- `
  5. #include
    " ?& h# v+ P- c/ f5 M
  6. #include: t- b/ a6 H) V0 {8 U0 u; W
  7. #include
    3 ?( X: R' @3 @; N! W& q3 D, `6 b
  8. #include
复制代码

* S7 H1 \$ K: D; o
* q+ R  E) s) V: ~服务器代码如下:' V7 E2 E2 o, ^8 x9 ?9 }3 D- Q
  1. #include8 ]2 o+ j' }- `/ I
  2. #include7 c4 j4 q( R% i+ @1 q& @2 P* s# R
  3. #include6 p1 g9 g! U+ _8 t% s
  4. #include: f( d) U4 d& ]& O
  5. #include/ P2 Q1 ?8 T# H# [
  6. #include& A, |7 I+ n5 r* D
  7. #include1 X2 \  Y5 q/ n
  8. #include
复制代码

) Y( _+ W7 l2 \) n, Z6 h1 O) A" b$ Y1 R: {! x
0 i- l" w4 J5 g! L( q

0 V2 d6 E5 S8 h6 V% L' o
' T  G2 Q1 H  q

, R' H4 l) M1 {
! c) d8 ^" u$ Q+ x9 _. d2 W

/ Y, p, J( a* ?! [; }
# E, X( t8 \# v9 r
6 k. o+ w3 _4 K; h. \" k- D" r9 G
* F1 w8 b* I2 }$ ]

5 u, c( [) \8 y2 b
$ d8 u  c6 Q9 Q- t/ L

; Y% m  b$ v/ G% M) N% A! d4 T  r, N; \! j
+ B' X4 K4 A; }0 m

, P. t. j. Z5 A  n" ?6 g& q, k$ N
9 q' h% s1 f/ d/ O* I9 ~/ ^

8 h/ E( C; g( G) `. @/ D! K/ I9 K8 I

: b0 g. v: o* H, Y% |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:' `4 y4 r8 y# I# f& B, E& x& N
#include <sys/types.h> 
; O/ }% |$ c9 R) ?#include <sys/socket.h> 
: X" A% Y2 R, }' K. k4 m+ {#include <unistd.h> 5 t- u! V: t( s  v$ N6 a
#include <netinet/in.h> 
+ t8 U  a! n& `% |! S#include <arpa/inet.h> 3 h8 ?; D' `. m+ p0 p
#include <string.h> 9 e' Q5 D( K  `9 A- H( o
#include <stdio.h>  
" M# M  y1 `; I3 o6 w' Y* J# xint main() {
- E& ?% \( I2 T3 d+ [        int sockClient;: }$ D" l; J  I7 a
        struct sockaddr_in addrSrv;$ {8 S" h# [# S) g! s
        sockClient = socket(AF_INET,SOCK_DGRAM,0);
% j9 \# l- s* A7 a        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
. B6 a3 m( J1 E9 }0 K        addrSrv.sin_family=AF_INET;2 c2 M  c+ l  O- B
        addrSrv.sin_port=htons(6000);! {. t: t' r' A+ }9 S" }5 ]3 V1 K
        while(1)
6 i5 p  K& c3 d        {% h  V4 z8 i; g0 @: K
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
' Y! R# @( e9 X# I: r: ~; L  u                sleep(2);" b2 T8 i9 Z' e, G+ B
        }    + x9 r, ^( ]# k* w1 @1 D  y" F
        close(sockClient);  ) S! Q  `) j' S& e" n) s+ I
        return 0; 8 S) p+ o  ^3 H, I' A
}
$ x+ `3 K" o) s+ N# U. R
2 y+ A) ]7 `; W  W3 g- ]3 B) S8 }9 P7 l; v% u$ A
客户端:
  1. #include <stdio.h> ; M: E3 m. t' {+ N) h0 _+ k* C
  2. #include <sys/types.h> 
    8 [9 p% q# Z' ~- t+ u2 i' Y
  3. #include <sys/socket.h> 8 ~3 I8 N$ u( o% f6 z$ J- U) |3 _7 a
  4. #include <netinet/in.h> 9 [- T9 M) S2 \
  5. #include <arpa/inet.h> 5 u0 B9 O9 x, u  y$ r, N
  6. #include <string.h> 5 D6 i4 g) U- d, t5 T
  7. #include <unistd.h> 
    $ k5 i- l; Q! h3 a
  8. #include <fcntl.h> 
    $ p. u* g& z- O$ x
  9. #include <sys/time.h> & P' U7 ~5 Q# G( e0 B
  10. #include <sys/select.h> 
    : X3 @5 N  x7 S4 I* ~& `
  11. #include <sys/ioctl.h>  , L: E6 N2 d, t$ ?
  12. int main() {0 S4 {6 s2 G3 X/ [0 P
  13.         int sockSrv;
    # K. h* V1 P" t8 K) I
  14.         struct sockaddr_in addrSrv;8 b5 ~! @$ Z9 A0 ]/ o- o
  15.         int len;) \' b" K' q* P( z3 Y. Y+ K6 g
  16.         char recvBuf[100];
    $ {& J$ s1 q* C1 o6 p
  17.         scanf("%s",recvBuf);3 R# t2 {) k& P! Y& @7 e( h
  18.         struct sockaddr_in addrClient;
    2 N+ e# n' S1 N" l
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    . S0 I9 U7 @3 }! u4 u7 Z
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);
    * u( z* ^0 e; F+ R2 M" R7 |
  21.         addrSrv.sin_family = AF_INET;
    3 ^8 o2 K. U/ Z) f& [
  22.         addrSrv.sin_port = htons(6000);. z' s9 x) J9 r
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    2 ?, }4 X* V' z- k& {
  24.         len = sizeof(struct sockaddr);
    & k# ]+ D! ~0 k4 b4 f" R
  25.         memset(recvBuf, 0, 100);
    % P& a0 r3 ]8 G3 z* M: E
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);& \% [" \- a9 _/ N" v+ q
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));
    1 y" R) P- R# s" f
  28.         printf("Client data is:%s\n",recvBuf);
    / N" C5 g& J% Z$ O/ Q7 q  u
  29.         close(sockSrv);4 N  ?' W0 |4 ^* o1 f
  30.         return 0;9 t( [; ~6 u) K' n5 f
  31. } 
复制代码

8 V. B5 q' h6 o6 b2 a
7 m: t+ ^* H+ k, \4 x; B. P* A
% y( c$ Q+ g8 p1 G! d0 N& [2 k; f
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-3 15:58 , Processed in 0.117073 second(s), 18 queries .

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