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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2020-5-9 02:20:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
客户端代码如下:+ Y# `# T. b5 [" l
  1. #include  W# n- |  m' L* e4 }5 I
  2. #include% c$ ?2 ^" T) Z) G7 ]* {
  3. #include% w, v& i6 O2 K% B- j. N
  4. #include) r5 y% G, [5 [. a" h$ U% H
  5. #include' _( o* Y9 {3 M6 ^5 m: V7 Q$ y1 i% b1 l
  6. #include% G0 J: M+ b. Z
  7. #include0 H) C4 n2 ^* s* j; k1 z" L+ `
  8. #include
复制代码
+ X; P# E8 W0 `" P% y2 P2 q
& D2 }* `( R5 j& t2 h* K6 w
服务器代码如下:9 A+ J0 b$ u; X  G# e
  1. #include; g; f( X- A. @# n8 Q, F
  2. #include
    3 W4 N' E: b/ x$ @& U% L
  3. #include
    ' a  Z4 I6 j3 f8 S
  4. #include
    5 V+ o' y0 t5 ~* W7 k
  5. #include! B, l9 Z8 j/ f" e1 E
  6. #include
      q$ R3 d  U/ ~
  7. #include
    7 p0 E% T' |+ U/ z- C; _6 U7 S6 Q
  8. #include
复制代码

. P. A3 Z/ f9 f1 S! `3 c( B# X& w0 u; ]7 m8 K6 a
* [# a  O8 f/ s# O4 ?, K+ U
0 l1 Z! O, s6 w0 u2 d9 D* W( q- v

) M; m* S0 A2 v
6 ~! g1 b# p3 ?$ k8 X- Z
* Q6 o5 P; w& `. n8 ^8 k9 a
& w$ U: c% z% W& w' \: M4 o6 {( x1 ?

3 G' j0 W1 k" B3 U! E- r  b

+ `0 |) h! p; c/ |) }& k  p% |
5 h7 a% o3 B9 p: K

* q& X( i  E+ b
) R+ r- b& ]/ \/ L3 J& h

6 z* j  j+ T: a1 n/ {5 ^2 z, b& X7 g$ [0 V
( q/ o' S' p" n( g2 c/ O

& ?6 _) P" G  s% |; }! Q3 J9 @
' H. C$ s0 |; s2 Z' Z- G- b# R
9 y9 r  K* u' H9 s! r! O
: }# Z! c8 S) m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
沙发
 楼主| 发表于 2020-5-9 02:30:12 | 只看该作者
服务端:
. n) J, L4 a* b, {5 q#include <sys/types.h> . S9 q6 c# Q+ z& K
#include <sys/socket.h> 
0 G* h8 A& V4 v#include <unistd.h> 
" U+ q9 k# G9 Q5 s' D1 x#include <netinet/in.h> 
4 X. J+ n9 i/ {. `#include <arpa/inet.h> 
( V) W2 M2 b2 Y3 r#include <string.h> 
- W; D2 n- L! k2 K#include <stdio.h>  
/ P3 h5 \( f1 @! H& P/ _8 Z# Gint main() {
4 F% ]9 K2 ^+ _( z2 F! M9 G1 c* w        int sockClient;
% {/ x# {4 q0 @& j! J/ c2 V( V8 \) \        struct sockaddr_in addrSrv;
0 I5 B. l* x5 l- P/ B        sockClient = socket(AF_INET,SOCK_DGRAM,0);
, H4 Z0 W3 y+ ^$ t6 X        addrSrv.sin_addr.s_addr=inet_addr("127.0.0.1");
* g4 ]% D+ K2 R3 P/ i0 Q        addrSrv.sin_family=AF_INET;
( ^# H2 v8 L8 l        addrSrv.sin_port=htons(6000);
; @; X8 [8 D2 p        while(1)
: t3 g; m# X2 P( a        {5 N( d5 U( J4 F, B5 E4 s  p: [
                sendto(sockClient,"Hello World",strlen("Hello World")+1,0,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
* k* ^; c0 j! y8 I0 z1 y                sleep(2);
/ g" {' P& W9 o4 L" O" {9 d        }    ! i) ^' O$ p4 v3 j( E3 x3 d, U
        close(sockClient);  $ m& r! S: v( M# ?" }  ]7 K
        return 0; 
- G; S+ e; R! |& W}
# m5 K( W" r( a# S1 Y  L' V8 M: P. u& m1 n4 i
: H  ]2 }) g! c. N3 Y5 D
客户端:
  1. #include <stdio.h> ! D- h$ i; ], U0 P$ c8 E' \
  2. #include <sys/types.h> ) `. P" S1 v# u3 T% ]
  3. #include <sys/socket.h> 
    ( I" s8 t" G% f/ I
  4. #include <netinet/in.h> 
    ) f2 E: W4 n7 z4 b
  5. #include <arpa/inet.h> 
      c$ R7 e( F7 S) l0 w6 h! c
  6. #include <string.h> 
    + x6 i0 g3 S9 n" p
  7. #include <unistd.h> 
    9 f3 r& f0 \& }) `0 {
  8. #include <fcntl.h> 
    & X% W' c* N/ {* o1 H( W. Q; S: {
  9. #include <sys/time.h>   U5 \( B! y9 S& c! T" [' m$ u- N
  10. #include <sys/select.h> 
    ; }5 }" y( ~" i' {4 |( e
  11. #include <sys/ioctl.h>  , e1 x2 P: {' C
  12. int main() {
    4 a- Q! _6 \- I3 ?6 Y- }0 r; G
  13.         int sockSrv;
    ( v! H# g) [/ X& x4 T- J3 J: q
  14.         struct sockaddr_in addrSrv;
    : d7 o) @( W- A) g/ U7 t, K* H
  15.         int len;  C6 J1 B0 E/ L. i
  16.         char recvBuf[100];
    9 p; o4 L8 g+ R+ R( V
  17.         scanf("%s",recvBuf);
    # H; x) o' m* v  j9 z. `
  18.         struct sockaddr_in addrClient;$ P( |9 p3 |3 I% Q! k) c( |
  19.         sockSrv = socket(AF_INET,SOCK_DGRAM,0);
    ' V' ]; ]1 H& h9 ~
  20.         addrSrv.sin_addr.s_addr = htonl(INADDR_ANY);- q! W2 K, o+ ?  b: g
  21.         addrSrv.sin_family = AF_INET;! \, x! k0 l4 I, _4 L+ c# ~5 h! H
  22.         addrSrv.sin_port = htons(6000);
    ! t+ l1 I! l) L
  23.         bind(sockSrv, (struct sockaddr *)&addrSrv, sizeof(struct sockaddr));
    7 I! [4 c- x8 @5 v
  24.         len = sizeof(struct sockaddr);! s3 ?& e& \0 e7 `
  25.         memset(recvBuf, 0, 100);
    8 @0 Z2 O& n( f2 u: w8 v& v! d7 h
  26.         recvfrom(sockSrv, recvBuf, 100, 0, (struct sockaddr *)&addrClient,&len);
    ( N8 G9 f/ X6 g5 Z' N4 _
  27.         printf("客户端的IP地址:%s\r\n",inet_ntoa(addrClient.sin_addr));* t8 X4 E" ?" C' W# |$ {# w
  28.         printf("Client data is:%s\n",recvBuf);
    7 _8 E$ }# b7 d6 a$ k& a1 Z1 m
  29.         close(sockSrv);, ]0 N5 |% X( v: I
  30.         return 0;% m, A" F7 R3 X: d
  31. } 
复制代码
8 d$ ^8 [( Q; W3 I# u/ X

1 @7 N0 t* v; r6 v8 [. [3 i; M# _& X
3 u* I0 e' J1 ~5 n
8 x1 [$ N( V( \6 u
回复 支持 反对

使用道具 举报

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

本版积分规则

GMT+8, 2024-5-5 18:57 , Processed in 0.125746 second(s), 18 queries .

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