linux下TCP socket程式設計初步(1)
Socket程式設計:
結構:sockaddr_in
Sin_family 地址家族 AF_INET AF_INET6
Sin_port 16位
Sin_addr s_addr 32位
Server:socket,bind,listen,accept
Client:socket,connect
另外,今天剛看到一篇部落格中寫的比較清楚,可以參考:
http://blog.csdn.net/kikilizhm/article/details/7858405
服務端程式:
//ipserver.cc
#include<iostream>
using namespace std;
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<fcntl.h>
#include<string>
#include<stdlib.h>
int main(int argc,char* argv[])
{
short port=12345;
if(argc>1)
port=atoi(argv[1]);
int ss=socket(AF_INET,SOCK_STREAM,0);
if(ss<0)
return -1;
sockaddr_in si;
si.sin_family=AF_INET;
si.sin_port=htons(port);
si.sin_addr.s_addr=0;//INADDR_ANY 不管哪個IP地址
socklen_t len=sizeof(si);
int r=bind(ss,(sockaddr*)&si,len);
if(r<0)
return -1;
r=listen(ss,20);
if(r<0)
return -1;
sockaddr_in c;
for(;;)
{
len=sizeof(c);
int cs=accept(ss,(sockaddr*)&c,&len);//對方套接地址放第二個引數
if(cs<0)
continue;
char ip[100];//#include<arpa/inet.h>
inet_ntop(AF_INET,&c.sin_addr.s_addr,ip,sizeof(ip));
cout<< ip<<"到此訪問"<<endl;
string msg="your ip:";
msg+=ip;
msg+='\n';
write(cs,msg.c_str(),msg.size());
close(cs);
}
}
編譯後,執行./a.out 12345
程式在等待,這時在windows下telnet:(客戶端)
telnet 10.31.50.149 12345
也可以自己寫一客戶端程式:
//ipclient.cc
#include<iostream>
using namespace std;
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<fcntl.h>
//#include<string>
#include<stdlib.h>
int main(int argc,char* argv[])
{
if(argc!=3)
{
cout<<*argv<<"ip port"<<endl;
return 0;
}
int s=socket(AF_INET,SOCK_STREAM,0);
if(s<0)
return -1;
sockaddr_in si;
short port=atoi(argv[2]);
char* ip=argv[1];
si.sin_family=AF_INET;
si.sin_port=htons(port);
inet_pton(AF_INET,ip,&si.sin_addr.s_addr);
int r=connect(s,(sockaddr*)&si,sizeof(si));
if(r<0)
return -1;
char msg[200];
int n=read(s,msg,sizeof(msg));
if(n<0)
return -1;
msg[n]='\0';
cout<<msg<<endl;
close(s);
return 0;
}
分別編譯通過:
客戶端:
./ipc 127.0.0.1 12345
your ip:127.0.0.1
伺服器端:
./ips 12345
127.0.0.1到處訪問
相關文章
- linux socket程式設計初步(2)Linux程式設計
- Linux Socket C語言網路程式設計:TCP SocketLinuxC語言程式設計TCP
- socket程式設計(1)程式設計
- Linux socket程式設計學習初步(4)--伺服器端多程式Linux程式設計伺服器
- Linux環境下的Socket程式設計Linux程式設計
- Linux系統程式設計(33)—— socket程式設計之TCP程式的錯誤處理Linux程式設計TCP
- linux Socket 程式設計Linux程式設計
- Linux下TCP網路程式設計流程LinuxTCP程式設計
- socket程式設計在TCP中的應用程式設計TCP
- Java Tcp協議socket程式設計學習JavaTCP協議程式設計
- linux下bluetooth程式設計(五)bluetooth與socketLinux程式設計
- Linux socket程式設計學習初步(5)--伺服器多執行緒Linux程式設計伺服器執行緒
- python網路-Socket之TCP程式設計(26)PythonTCP程式設計
- 通過 Socket 實現 TCP 程式設計入門TCP程式設計
- Socket、TCP/IP、HTTP、FTP及網路程式設計TCPHTTPFTP程式設計
- Linux系統程式設計(35)—— socket程式設計之TCP伺服器的併發處理Linux程式設計TCP伺服器
- Windows Socket程式設計精華《TCP通訊伺服器》Windows程式設計TCP伺服器
- Socket程式設計,從TCP分析到建立web網站程式設計TCPWeb網站
- (3)Tcp Socket程式設計的封裝類 TcpListener/TcpClientTCP程式設計封裝client
- 基於TCP協議的Socket網路程式設計( )TCP協議程式設計
- Linux Socket 程式設計簡介Linux程式設計
- Linux系統程式設計(34)—— socket程式設計之TCP伺服器與客戶端的互動Linux程式設計TCP伺服器客戶端
- 【python socket程式設計】—— 1.初探Python程式設計
- Linux網路程式設計之socket簡單通訊TCP--服務端程式碼Linux程式設計TCP服務端
- socket程式設計實現tcp伺服器_C/C++程式設計TCP伺服器C++
- [python3.3]Python非同步Socket程式設計【TCP】Python非同步程式設計TCP
- Linux Socket C語言網路程式設計:UDP SocketLinuxC語言程式設計UDP
- SOCKET程式設計程式設計
- Linux socket程式設計學習初步(3)--客戶端向伺服器請求檔案Linux程式設計客戶端伺服器
- 基於TCP/UDP的Socket程式設計,HTTP/HTTPS協議TCPUDP程式設計HTTP協議
- 淺談 TCP/IP 網路程式設計中 socket 的行為TCP程式設計
- Linux Socket C語言網路程式設計:Select SocketLinuxC語言程式設計
- 淺談Delpih中的windowsAPI程式設計初步(1)(轉)WindowsAPI程式設計
- Linux系統程式設計(37)—— socket程式設計之原始套接字Linux程式設計
- Java遊戲程式設計初步Java遊戲程式設計
- Java Socket程式設計Java程式設計
- Java Socket程式設計Java程式設計
- WCF、Socket程式設計程式設計