1. [Code][c/c++] Code
Service side:
//
Main.m
Server
//
Created by Mac on 13-4-15.
Copyright (c) 2013 Mac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <sys/types.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int Createserversocket (short port)
{
int socket_server=0;
Socket_server=socket (af_inet,sock_stream,0);
Populating IP with ports
/*
struct SOCKADDR_IN {
__uint8_t Sin_len;
sa_family_t sin_family;
in_port_t Sin_port;
struct IN_ADDR sin_addr;
Char Sin_zero[8];
};
*/
struct sockaddr_in saddr = {0};
Saddr.sin_len=sizeof (SADDR);
Saddr.sin_family=af_inet;
saddr.sin_port= htons (port); Native byte sequence to network byte order
Saddr.sin_addr.s_addr=inaddr_any;
Bind//(struct sockaddr *) &saddr Strong turn
if (Bind (Socket_server, (struct sockaddr *) &saddr, sizeof (SADDR))! = 0) {
return 0;
}
Listening
if (Listen (socket_server, 100)! = 0) {
return 0;
}
return socket_server;
}
Receives the connection and returns the Scoket of the client
int acceptclientsocket (int serversocket)
{
int clinetsocket=0;
struct sockaddr_in caddr = {0};
socklen_t len=sizeof (CADDR);
Clinetsocket = Accept (ServerSocket, (struct sockaddr *) &caddr, &len);
char * IPADDRESS=INET_NTOA (CADDR.SIN_ADDR);
printf ("Accept--->%s,%d", ipaddress,caddr.sin_port);
return clinetsocket;
}
void Message (int socket)
{
Char send_message[1024]= "hello\n";
Char recv_message[1024]={0};
Send (socket, send_message, strlen (send_message) +1, 0);
while (1) {
recv (socket, recv_message, sizeof (Recv_message), 0);
printf ("<-----%s", recv_message);
printf ("----->");
Fgets (send_message, sizeof (send_message), stdin);
Send (Socket,send_message,strlen (send_message) +1,0);
}
}
int main (int argc, const char * argv[])
{
Short port=9898;
if (argc>1) {
Port= (short) atoi (argv[1]);
}
int serversocket = Createserversocket (port);
if (ServerSocket = = 0) {
printf ("Cerate scoket error\n");
return 0;
}
printf ("Cerate scoket ok!\n");
while (true)
{
int Clinetscoket=acceptclientsocket (serversocket);
if (Clinetscoket = = 0)
{http://www.enterdesk.com/special/shouhui/
printf ("Client connect error\n");
return 0;
}hand-painted pictures
printf ("Client connect ok.....\n");
Message (Clinetscoket);
return 0;
}
Receive connection
Accept (< #int #>, < #struct sockaddr *restrict#>, < #socklen_t *restrict#>)
struct sockaddr sadd2={0};
socklen_t len=sizeof (struct sockaddr);
Accept (ServerSocket, &SADD2, &len);
return 0;
}
Client:
//
Main.m
Client
//
Created by Mac on 13-4-15.
Copyright (c) 2013 Mac. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <sys/types.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int Createclinetsocket ()
{
int clinetsocket = 0;
Clinetsocket = socket (af_inet, sock_stream, 0);
return clinetsocket;
}
int connectiontoserver (int client_socket,const char * server_ip,unsigned short port)
{
struct sockaddr_in saddr={0};
Saddr.sin_len=sizeof (SADDR);
Saddr.sin_family=af_inet;
Inet_aton (server_ip, &saddr.sin_addr);
Saddr.sin_port=htons (port);
if (Connect (client_socket, (struct sockaddr *) &saddr, sizeof (SADDR)) ==0) {
return client_socket;
}
return 0;
}
Client
void Message (int socket)
{
Char send_message[1024]= "0";
Char recv_message[1024]={0};
while (1) {
recv (socket, recv_message, sizeof (Recv_message), 0);
printf ("<-----%s", recv_message);
printf ("----->");
Fgets (send_message, sizeof (send_message), stdin);
Send (Socket,send_message,strlen (send_message) +1,0);
}
}
int main (int argc, const char * argv[])
{
const char * server_ip= "127.0.0.1";
Short server_port=9898;
if (argc>1) {
SERVER_IP = argv[1];
}
if (argc>2) {
Server_port= (short) atoi (argv[2]);
}
int client_socket= createclinetsocket ();
if (Connectiontoserver (CLIENT_SOCKET,SERVER_IP, Server_port) ==0) {
printf ("Connect to Server error\n");
return 0;
}
printf ("Connect to Server ok\n");
Message (Client_socket);
return 0;
}
C Language Socket programming